#include "stdafx.h"
#define CLASSES 3
#define STUDENTS 5
#define GRADE 2
int main(int argc, char* argv[])
{
int s[GRADE][CLASSES][STUDENTS] = {{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}},{{16,17,18,19,20},{21,22,23,24,25},{26,27,28,29,30}}};
int clas, student, grade, total, subtotal, gradetotal;
gradetotal = 0;
for(grade = 0; grade< GRADE; grade++)
{
total = 0;
for(clas = 0; clas < CLASSES; clas++)
{
subtotal = 0;
for(student = 0; student < STUDENTS; student++)
subtotal += s[grade][clas][student]; // 0 0 0 0 2 4 total = 1학년의 성적합 100 12 4 2학년의 성적합
printf("%d학년 학급 %d의 평균 성적 = %d\n", grade, clas, subtotal/STUDENTS);
total += subtotal;
}
gradetotal += total;
printf("%d학년 전체 학생들의 평균 성적 = %d\n", grade, total/(CLASSES*STUDENTS));
}
printf("전교 평균 성적 = %d\n", gradetotal/(GRADE*CLASSES*STUDENTS));
return 0;
}
------------------------------------------
왜이리될까 고심에 고심을 거듭하여 드디어 알아냄
1학년과 2학년의 학년별 평균값이 1학년건 제대로 나오고 2학년건 제대로 안나오고 또 같이 total을 사용해 평균을 구하는 전체평균은 값이 제대로 나온
단 사실에서 수사를 시작함.
total의 초기화가 해당 for문의 밖에 밖에 가 있어서 total값이 초기화가안되고 중첩이되버려서 2학년 평균값이 이상하게 나오는거였음
그래서 total을 해당 for문의 바로 바깥에다가 초기화를 시켜주고 gradetotal의 초기화를 그밖에 해줌으로서
전교 평균을 구하는데 쓸 gradetotal지정도 클리어하고 total도 정상적으로 작동하게 되었던 것입니다.
와우 고심에 고심을 거듭하여 결국 문제를 해결할 때의 기분은 정말 환상적
이긴 개뿔 형님들 고기를 주는것보다 고기잡는 법을 가르쳐주려하시는건 알겠지만 전 그냥 고기 먹을래요
고기를 키우는법을 배워야지
장하다