책 내용 질문하기
배열 대각선으로 채우기 C언어 코드
도서
2021 시나공 정보처리산업기사 실기
페이지
387
조회수
267
작성일
2021-10-01
작성자
탈퇴*원
첨부파일

 

순서도에서

 

i=2, 10, 1 

J=1, 5, 1

K=i-J

 

이 부분을

 

C언어 코드에서

 

i=0 ; i<=8 ; i++

J=0 ; J<=4 ; J++

K=i-J

 

왜 이렇게 작성해야하는지 이해가 안됩니다. 

 

순서도에서 반복 변수 i는 1회전일 때 2, 2회전일 때 3 이니까 2부터 10까지 반복하고

반복변수에서 행 값인 J를 빼면 열 값인 K가 나오는 걸로 이해를 했는데,

 

C언어 코드를 보면 반복 변수 i를 왜 0부터 8까지 반복하는 거죠?

C언어에서 배열은 0부터 시작이라는 건 아는데 그렇다면 반복 변수는 1부터 9까지 아닌가요?

0부터 8까지 반복한다면 열 값 K는 어떻게 i-J가 될 수 있죠?

 

제가 어느부분에서 잘못 이해를 하고 있는건지 알려주시면 감사하겠습니다.

 

답변
2021-10-04 11:22:11

안녕하세요 길벗수험서 운영팀입니다.

 

i-j의 값을 맞추기 위해서 입니다.

순서도에서는 값이 들어가는 순서대로 배열의 위치가 (1,1) (1,2) (2,1)로 들어가죠 여기서 열은 i-j로 구해진 값으로 차례대로 2-1 2-1 3-1이 됩니다.

 

코드에서는 행 위치를 잡기 위해 두번째 배열의 시작 주소를 0으로 할 수밖에 없습니다.

이에 따라 i의 값이 1 감소하게 되고, 추가로 배열이 0부터 시작한다는 원인으로 인해 또 1이 감소하게 되죠.

 

이렇게 수행해야면 (0,0) (0,1) (1,0)에 차례대로 값이 들어가게 되고, i-j로 구해진 값을 나열하게 되면 0-0 0-0 1-0이 됩니다.

 

순서도로 구해지는 행열의 위치와, 코드로 구해지는 행열의 위치를 디버깅표로 값을 나열해가며 어떻게 변화하도록 구성했는지 추적해보세요.

 

행복한 하루되세요 :)

  • 관리자
    2021-10-04 11:22:11

    안녕하세요 길벗수험서 운영팀입니다.

     

    i-j의 값을 맞추기 위해서 입니다.

    순서도에서는 값이 들어가는 순서대로 배열의 위치가 (1,1) (1,2) (2,1)로 들어가죠 여기서 열은 i-j로 구해진 값으로 차례대로 2-1 2-1 3-1이 됩니다.

     

    코드에서는 행 위치를 잡기 위해 두번째 배열의 시작 주소를 0으로 할 수밖에 없습니다.

    이에 따라 i의 값이 1 감소하게 되고, 추가로 배열이 0부터 시작한다는 원인으로 인해 또 1이 감소하게 되죠.

     

    이렇게 수행해야면 (0,0) (0,1) (1,0)에 차례대로 값이 들어가게 되고, i-j로 구해진 값을 나열하게 되면 0-0 0-0 1-0이 됩니다.

     

    순서도로 구해지는 행열의 위치와, 코드로 구해지는 행열의 위치를 디버깅표로 값을 나열해가며 어떻게 변화하도록 구성했는지 추적해보세요.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.