実現したいこと
成績管理システムを作成しています。
名前、学籍番号、3教科の得点からなる構造体を用いてファイルを読み込み、ファイル内データを表示したり平均点を求めるものです。
ファイルの内容を成績管理システムと同じプログラム内に作ることは可能でしょうか?
ファイルオープンし、その後の処理を実行したいです。
ソートなどの関数は作ってあり、エラーは出ていません。
(初歩的な質問で申し訳ありません。コロナの影響で大学がリモートになり昨年と使っているソフトが違い、よくわからなくなってしまいました。)
ソースコード
/*成績管理システム*/ #include<stdio.h> #include<string.h> #include<math.h> #define NAME_LEN 128 #define NUM_LEN 64 #define NUMBER 5 /*学生を表す構造体*/ typedef struct{ char name[NAME_LEN]; //名前 char number[NUM_LEN]; //学籍番号 double math; //数学の得点 double eng; //英語の得点 double phy; //物理の得点 }Student; int main(void) { int a,b,c,d; int i=0; int cnt=0; double mave,eave,pave; //構造体作成 Student human[NUMBER]={ {"Shimizu","h741", 50.0,60.0, 70.0}, {"Mayu","h777", 60.0, 70.0, 80.0}, {"Momo","h500", 80.0, 80.0, 80.0}, }; /*ファイル読み込み*/ FILE *fp; //int i=0; if((fp = fopen("hw.dat","r"))==NULL){ printf("\aファイルをオープンできません。\n"); } else{ while(fscanf(fp,"%s %s %lf %lf %lf",human[i].name,human[i].number,&human[i].math,&human[i].eng,&human[i].phy)){ printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); i++; } fclose(fp); } return i; printf("平均点を表示しますか? はい:1 いいえ:2 :"); scanf("%d",&a); if(a==1){ sum_Student(human,cnt,&mave,&eave,&pave); printf("数学の平均点は%3.1lfです。",mave); printf("英語の平均点は%3.1lfです。",eave); printf("物理の平均点は%3.1lfです。",pave); } do{ printf("各順にソートしますか? はい:1 いいえ:2 :"); scanf("%d",&b); if(a==1){ printf("どのデータによってソートしますか? 名前:1 学籍番号:2 数学:3 英語:4 物理:5 :"); scanf("%d",&c); printf("昇順と降順どちらでソートしますか? 昇順:1 降順:2 :"); scanf("%d",&d); if(c==1&d==1){ puts("\n名前を昇順にソートしました。"); sort_by_name1(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==1&d==2){ puts("\n名前を降順にソートしました。"); sort_by_name2(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==2&d==1){ puts("\n学籍番号を昇順にソートしました。"); sort_by_number1(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==2&d==2){ puts("\n学籍番号を降順にソートしました。"); sort_by_number2(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==3&d==1){ puts("\n数学の得点を昇順にソートしました。"); sort_by_math1(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==3&d==2){ puts("\n数学の得点を降順にソートしました。"); sort_by_math2(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==4&d==1){ puts("\n英語の得点を昇順にソートしました。"); sort_by_eng1(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==4&d==2){ puts("\n英語の得点を降順にソートしました。"); sort_by_eng2(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==5&d==1){ puts("\n物理の得点を昇順にソートしました。"); sort_by_phy1(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } if(c==5&d==2){ puts("\n物理の得点を降順にソートしました。"); sort_by_phy2(human,cnt); for(i=0;i<cnt;i++) printf("%-10s %-10s %5.1f %5.1f %5.1f\n",human[i].name,human[i].number,human[i].math,human[i].eng,human[i].phy); } } }while(b!=2); return 0; }
実行結果
ファイルをオープンできません。
試したこと
main関数内で構造体の内容を作成してみましたがやはり反映されませんでした.
補足
使用PCはWindows10でプログラム作成に使用しているソフトはpaiza.ioという無料サイトです。
回答2件
あなたの回答
tips
プレビュー