책 내용 질문하기
안녕하세요. 해당 코드가 잘 이해가 가지 않아 질문드립니다ㅠㅠ
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
414
조회수
161
작성일
2019-08-22
작성자
탈퇴*원
첨부파일

#include <stdio.h>

 

int main(){

int x, y, h, L;

int p[5][5] = { 0 }, q[5][5] = { 0 };

 

h = L = 0;

for(x = 0; x <= 4, x++){

for(y = 0; y <= 4, y++){

h += 2;

p[x][y] = h;

}

}

for(x = 2; x >= 1; x--){

for(y = 0; y <= 4; y++){

for(h = 0; h <= 4; h++){

L = 4 - h;

if(x == 2)

q[y][h] = p[L][y];

else

p[y][h] = q[L][y];

}

}

}

}

 

 

이 코드에서 왜 첫 번째 for문의 변수 x의 초기값들이 2, 1인지 잘 이해가 가지 않아 질문드렸습니다.

414쪽에 있는 응용 알고리즘 - 배열의 코드입니다.

 

답변
2019-08-22 14:46:05

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

 

for(x = 2; x >= 1; x--) 

위 부분은 어떤식으로 구성되든 문제가 없습니다. 그저 포함된 for(y)문을 2회만 반복시켜주면 되는 역할이죠.

 

다만 변수 x를 이용하는 if부분에서 x변수의 값을 고려해야 합니다.

 

if (x == 2) 

  q[y][h] = p[L][y];

else

  p[y][h] = q[L][y];

 

문제를 보시면 배열p -> 배열q -> 배열p  순서대로 값을 이동하고 있습니다.

그럼 코드도 이에 따라줘야죠.

for(x)에서 변수 x의 변화값이 2, 1로 변화하니

x가 2일 때는 q[y][h] = p[L][y];을 수행하여 배열q에 값을 입력하고,

x가 1일 때는 p[y][h] = q[L][y];을 수행하여 배열p에 값을 치환하는 순서대로 진행됩니다.

 

첫번째 for(x)는 얼마든지 바뀔 수 있습니다.

만약

for (x=0; x<=1; x++) 이런 식으로 수정되었다면, if문의 코드도 다음과 같이 수정해줘야하죠.

 

if (x == 0) 

  q[y][h] = p[L][y];

else

  p[y][h] = q[L][y];

 

첫 반복때는 반드시 배열 q에 값이 들어가야 한다는 점만 잊지 않으시면 됩니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-08-22 14:46:05

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

     

    for(x = 2; x >= 1; x--) 

    위 부분은 어떤식으로 구성되든 문제가 없습니다. 그저 포함된 for(y)문을 2회만 반복시켜주면 되는 역할이죠.

     

    다만 변수 x를 이용하는 if부분에서 x변수의 값을 고려해야 합니다.

     

    if (x == 2) 

      q[y][h] = p[L][y];

    else

      p[y][h] = q[L][y];

     

    문제를 보시면 배열p -> 배열q -> 배열p  순서대로 값을 이동하고 있습니다.

    그럼 코드도 이에 따라줘야죠.

    for(x)에서 변수 x의 변화값이 2, 1로 변화하니

    x가 2일 때는 q[y][h] = p[L][y];을 수행하여 배열q에 값을 입력하고,

    x가 1일 때는 p[y][h] = q[L][y];을 수행하여 배열p에 값을 치환하는 순서대로 진행됩니다.

     

    첫번째 for(x)는 얼마든지 바뀔 수 있습니다.

    만약

    for (x=0; x<=1; x++) 이런 식으로 수정되었다면, if문의 코드도 다음과 같이 수정해줘야하죠.

     

    if (x == 0) 

      q[y][h] = p[L][y];

    else

      p[y][h] = q[L][y];

     

    첫 반복때는 반드시 배열 q에 값이 들어가야 한다는 점만 잊지 않으시면 됩니다.

     

    행복한 하루되세요 :)

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