컴공 1학년인 학생입니다..
마지막 숙제를 가지고 머리를 앓고 있는데 뭐가 잘못됐는지 원하는 값이 안나오네요.
학점과 평균이 제대로 안나오는데 좀 봐주세요;
#include <stdio.h>
#define all_stu 10
typedef struct {
int number; /* 0으로 시작 하는 수를 받으면 8진수 인식 때문에 꼼수로 했음; */
char *name;
int mid, fin, home;
float unification;
char *grade;
} all_sheet;
all_sheet sheet[all_stu];
void data()
{
}
int main(void)
{
int i = all_stu;
int sum1,sum2,sum3;
float ave1,ave2,ave3;
sheet[0].number = 61111;
sheet[0].name = " x x x ";
sheet[0].mid = 80;
sheet[0].fin = 60;
sheet[0].home = 70;
sheet[1].number = 61112;
sheet[1].name = " x x x ";
sheet[1].mid = 10;
sheet[1].fin = 20;
sheet[1].home = 30;
sheet[2].number = 61113;
sheet[2].name = " x x x";
sheet[2].mid = 20;
sheet[2].fin = 30;
sheet[2].home = 20;
sheet[3].number = 61114;
sheet[3].name = " x x x";
sheet[3].mid = 80;
sheet[3].fin = 60;
sheet[3].home = 90;
sheet[4].number = 61115;
sheet[4].name = " x x x";
sheet[4].mid = 50;
sheet[4].fin = 60;
sheet[4].home = 90;
sheet[5].number = 61116;
sheet[5].name = " x x x ";
sheet[5].mid = 40;
sheet[5].fin = 60;
sheet[5].home = 80;
sheet[6].number = 61117;
sheet[6].name = " x x x ";
sheet[6].mid = 60;
sheet[6].fin = 50;
sheet[6].home = 80;
sheet[7].number = 61118;
sheet[7].name = " x x x ";
sheet[7].mid = 100;
sheet[7].fin = 90;
sheet[7].home = 90;
sheet[8].number = 61119;
sheet[8].name = "x x x";
sheet[8].mid = 10;
sheet[8].fin = 60;
sheet[8].home = 30;
sheet[9].number = 61110;
sheet[9].name = " x x x ";
sheet[9].mid = 90;
sheet[9].fin = 30;
sheet[9].home = 70;
for(i=0;i<10;i++){
sheet[i].unification = (float)(sheet[i].mid*0.4)+(float)(sheet[i].fin*0.4)+(float)(sheet[i].home*0.2);
}
// <<<<-----여기가 문제의 학점 구하기----->>>>
for(i=0;i<10;i++){
if(sheet[i].unification >= 95) sheet[i].grade = "A+";
else if(sheet[i].unification >= 90) sheet[i].grade = "A";
else if(sheet[i].unification >= 85) sheet[i].grade = "B+";
else if(sheet[i].unification >= 80) sheet[i].grade = "B";
else if(sheet[i].unification >= 75) sheet[i].grade = "C+";
else if(sheet[i].unification >= 70) sheet[i].grade = "C";
else if(sheet[i].unification >= 65) sheet[i].grade = "D+";
else if(sheet[i].unification >= 60) sheet[i].grade = "D";
else sheet[i].grade = "F";
}
printf("=========================================================================n");
printf("학 번 이 름 중간고사 기말고사 숙 제 통합점수 학점n");
printf("=========================================================================n");
for(i = 0;i < all_stu;i++){
printf("%06d %10s %5d %5d %5d %5.0lf %c n", sheet[i].number, sheet[i].name, sheet[i].mid, sheet[i].fin, sheet[i].home, sheet[i].unification, sheet[i].grade);
}
printf("=========================================================================n");
// <------------------------- 여기가 평균 ------------------------->
for(i=0;i<10;i++){
sum1 += sheet[i].mid;
}
for(i=0;i<10;i++){
sum2 += sheet[i].fin;
}
for(i=0;i<10;i++){
sum3 += sheet[i].home;
}
ave1 = (float)(sum1)/(float)(all_stu);
ave2 = (float)(sum2)/(float)(all_stu);
ave3 = (float)(sum3)/(float)(all_stu);
printf(" 평균 %5.0f %5.0f %5.0fn",ave1, ave2, ave3);
printf("=========================================================================n");
return 0;
}
힌트만 드리고 갈께요...
변수의 초기화하고요.....
출력시의 옵션에서 '문자' 하나와 '문자열'의 차이를 생각해보시기 바래요