学校のC言語の講義で、「100人以下の不特定の人数の生徒の学籍番号、英語・数学・国語の得点を読みこんで、読み込んだ順に各人のデータを、さらに、各科目と総得点に関する平均と標準偏差を出力するCプログラムを作成せよ」という課題が出され、そのCプログラムを作成しました。
プログラムは以下の通りです。大変長いプログラムで申し訳ありません。
#include<stdio.h>
#include<string.h>
typedef struct {
char id[6];
int Eng,Math,Jap;
double Total,Ave,Dev;
} Student;
int main(void)
{
Student student[101],temp;
int num,scanf_val,k,i;
for(num=0; num<101;){
scanf_val = scanf("%5s %d",&student[num].id,&student[num].Eng,&student[num].Math,&student[num].Jap,&student[num].Total,&student[num].Ave,&student[num].Dev);
if(scanf_val == 2)
num++;
else if(scanf_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 students.\n"
" ==> We process first 101 students.");
}
Total = 0;
for(k=0; k<num; ++k){
scanf("%lf",&student[k]);
Total = (student[k].Eng + student[k].Math + student[k].Jap);
}
Ave = 0.0;
for(k=0; k<num; ++k){
scanf("%lf",&student[k]);
Ave += student[k];
}
Ave /= 100.0;
Dev = 0.0;
for(k=0; k<num; ++k){
Dev += (student[k]-Ave)*(student[k]-Ave);
}
Dev /=100.0;
printf("Id-No Eng Math Jap Total\n"
"----- ---- ---- ---- -----\n");
for(k=0; k<num; k++)
printf("55s %3d\n",student[k].id,student[k].Eng,student[k].Math,student[k].Jap,Total);
printf("-------------------------------\n"
" Ave = %4.4g\n"
" Dev = %3.3g\n");
return 0;
}
7行目で定義しているつもりなのですが、これでは定義されたことにならないのでしょうか?
Total、Ave、Devが定義されていないというエラーが出る理由や、どう直すべきかを教えて頂けると、非常に助かります。
どうか宜しくお願い致します。