안녕하세요? 레조입니다.
일단
a[s][t] = (s*3)+(t+1);
이렇게 0~2까지 3번 루핑하는 for문에서는
1 2 3
4 5 6
7 8 9
이런식의 결과가 나오겠지요?
a[s][3] += a[s][t];
이것은 가로줄의 4번째 합계를 구하는 열을 의미합니다.
즉 루프를 돌때마다의 값을 누적하는 변수의 역할을 하는것이지요.
예를 들면 t가 0,1,2로 변화하면서 a[0][3]의 값을 결정하는 것이지요.
a[0][3] += a[0][0]...a[0][1]...a[0][2]
이렇게 3개의 값이 4번째 자리인 a[0][3]에 기록되는 것입니다.
다른 합들도 같은 방법으로 합이 결정되고있습니다.
마지막으로 a[3][3]에는
a[3][3] += a[s][3];
여기서는 4행 합열의 가로합으로 a[3][3]의 합을 구했네요.
세로든 가로든 값은 동일하니 어떤것을 선택하든 프로그래머 마음일테니...
그럼.. ^^
노란풍선 님이 쓰신 글 :
:
:
:
:
:
:
: 아무리 머리를 굴려도 이해가 안되서 질문합니다.
: 답변좀 꼭 달아주세요~
:
:
:
: 3*3 배열에서 가로와 세로의 총계를 구하는 프로그램입니다.
1 2
: 3 6 4 5
: 6 15 7 8
: 9 24 12 15
: 18 45
이렇게 4번째 행과 4번째 열에 합계를 구하는거거든요..
:
프로그램
main() { static int a[4][4];
: int s, t clrscr();
: for(s=0; s<3; s++) for(t=0;
: t<3; t++){ a[s][t] =
: (s*3)+(t+1); <- 질문1 : 이부분까지 for문 이용해서 대입을 하면
:
: a[0][0]= 1, 여기서 다시
: 두번째 for문으로 다시가서
:
: a[0][1]= 2,
:
: a[0][2]= 3 이게 맞는건지요?? 아님 바로 밑에 있는
:
: 식까지 실행하고
: 두번째 for문으로 가는지요?
:
:
: a[s][3] += a[s][t]; <- 질문2
: : 이부분을 모르겠어요
:
: 이부분을 풀어보면 a[s][3] = a[s][3] + a[s][t]
:
: 근데 어떤식으로 대입을 하길레 4번째행엔 합을 구하게
:
: 되는지....
: a[3][t] += a[s][t]; <- 윗부분이 해결되면
: 자동으로 해결되는 문제라 생략! } for (s=0;
: s<3; s++) a[3][3] += a[s][3]; <- a[3][3] = a
: [3][3] + a[s][3] <- 이건 또 무슨말인지??
for (s=0; s<4; s++){
: for(t=0; t<4; t++)
: printf("%2d", a[s][t]);
: printf("\n"); } }
:
:
:
:
|