작성
·
208
0
int i, j, k = 1, l = 2, m;
int a[6][6];
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
a[i][j] = 0;
// 대각선 숫자
if (i == j)
{
a[i][j] = k;
k = k + 2;
}
// 3행 이전
if (i < 5 / 2)
{
if (j == 4 - i)
{
for (m = 0; m <= 1; m++)
{
a[i][j] = a[m][m] + 1;
}
}
}
// 3행 이후
else if (i > 5 / 2 )
{
if (j == 4 - i)
{
// 문제점이라고 생각되는 부분
a[i][j] = a[3][3] -1;
}
}
}
}
// 출력
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
printf("%7d", a[i][j]);
}
printf("\n");
}
출력 결과입니다.
1 0 0 0 2
0 3 0 4 0
0 0 5 0 0
0 -1 0 7 0
6 0 0 0 9
일단 숫자 입력은 보류하였구요,
순서는
1. 0으로 모두 채우고
2. 홀수 숫자 대각선으로,
3. 그 숫자에 +1을 더하는 것입니다.
1행~2행은 [0,0] + 1 = [0,4],
[1,1] +1 = [0,3] 방법으로 +1을 해주었습니다.
질문은 3~4행에서
홀수 대각선 숫자를 -1해주려고 하는데
[3,3] 에서 각각 바로 7로 바로 인식되지 않고, 0다음 7로 인식됩니다.
[4,4]에서도 9로 인식이 안되고, 0으로 인식됩니다.
수정해야 할 부분이 궁금해요ㅜㅜ
답변 1
1
2중 for문이 돌아가는 순서를 생각해보세요.
i=3, j=1인 상황이 i=3, j=3인 상황보다 먼저입니다. 그래서 i=3, j=1인 시점에서는 a[3][3]에는 7이 아직 대입되지 않은 상태입니다.