#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쪽에 있는 응용 알고리즘 - 배열의 코드입니다.
안녕하세요 길벗수험서 운영팀입니다.
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에 값이 들어가야 한다는 점만 잊지 않으시면 됩니다.
행복한 하루되세요 :)