(ファイルの中身)
E0000 90 85 93
…
これらのデータを読み込んでいき、各合計点を計算し、各科目と合計点の平均・標準偏差を読み込んだ順に出力するプログラムを作成しています。
しかしなかなかうまくいきません。
出力結果は、
ID Eng Math Jap Total
------ ---- ---- ---- -----
E0000 90 85 93 268
...
...
------------------------------------
Avr 75.1 80.5 85.7 254.2
Avr 36.7 19.4 15.9 58.2
このような形にしたいのです。
Totalの部分がうまくいっていないように感じられるのですが、どのようにしたらいいのかわかりません。
ご教授よろしくお願いいたします。
#include <stdio.h>
#include <string.h>
#include <math.h>
typedef struct{
char id[6];
int eng;
int math;
int jap;
int total;
} Student;
int main(void)
{
Student student[101];
int num, scan_val, i;
double total,avr_e, avr_m, avr_j, dev_e, dev_m, dev_j;
for(num=0; num<101;){
scan_val=scanf("%5s %d %d %d",student[num].id,&student[num].eng,&student[num].math,&student[num].jap);
if(scan_val == 4)
num++;
else if (scan_val == EOF)
break;
else {
printf("Warning: Illegal data appears.(%d-th data)\n",num);
break;
}
}
if(num == 101){
printf("Warning: There are 101 or more student.\n"
" ==> We process first 101 student.\n");
}
total=0.0
for(i=0;i<num;++i){
student.total.=student.eng+student.math+student.jap;
}
avr_e=0.0
for(i=0;i<num;++i){{
avr_e+=student[i].eng;
}
avr_e/=num;
}
avr_m=0.0
for(i=0;i<num;++i){{
avr_m+=student[i].math;
}
avr_m/=num;
}
avr_j=0.0
for(i=0;i<num;++i){{
avr_j+=student[i].jap;
}
avr_j/=num;
}
dev_e=0.0
for(i=0;i<num;++i){
dev_e+=(student[i].eng=avr_e)*(student[i].eng - avr_e);
dev_e/=num;
dev_e=sprt(dev_e)
}
dev_m=0.0
for(i=0;i<num;++i){
dev_m+=(student[i].math=avr_m)*(student[i].math - avr_m);
dev_m/=num;
dev_m=sprt(dev_m)
}
dev_j=0.0
for(i=0;i<num;++i){
dev_j+=(student[i].jap=avr_j)*(student[i].jap - avr_j);
dev_j/=num;
dev_j=sprt(dev_j)
}
printf("Id-no Eng Math Jap Total \n"
"----- ---- ---- ---- -----\n");
for (i=0;i<num;i++)
printf("%5s %3d %3d %3d %3d\n",student[i].id,student[i].eng,student[i].math,student[i].jap,student.total);
printf("------------------------------\n");
printf("Avr %2.1f %2.1f %2.1f %2.1f\n",avr_e,avr_m,avr_j,total);
printf("------------------------------\n");
printf("Dev %2.1f %2.1f %2.1f %2.1f\n",dev_e,dev_m,dev_j,total);
return 0;
}
学生の人数は100人以下で不定とすること、一人一人のデータは構造体としStudentというデータ型名を付け、Student型を用とする配列を用意する
という条件があるのですが、きちんと条件どおりになっているでしょうか?