- 締切済み
ファイルから読み込み、配列
ファイルから学生の成績(出席点40点、中間試験100点、期末試験100点満点)を読み取り、総合点を100点に圧縮し、90以上A、80以上B、70以上C、60以上D、60未満Fと出力するプログラムについて御教授ください。 データを読み込み、配列に格納するのがキモのようですが、自分にはさっぱりわかりません。 forやポインタを使ってみましたが全然できません。 どなたかプログラムを書いて説明してくださいませんか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
*** 学生の成績ファイル.txt *** 40 100 100 *** ソース *** #include <stdio.h> typedef struct StudentsScore{ int syusseki; int chukan; int kimatu; int sum; }Score; int main( void ) { Score sc; FILE *fp = fopen( "学生の成績ファイル.txt", "r" ); float ScoreDivision = 100.0f / (float)( 40 + 100 + 100 ); fscanf( fp, "%d", sc.syusseki ); fscanf( fp, "%d", sc.chukan ); fscanf( fp, "%d", sc.kimatu ); sc.sum = sc.syusseki + sc.chukan + sc.kimatu; if( sc.sum * ScoreDivision >= 90 ) printf( "A\n" ); else if( sc.sum * ScoreDivision >= 80 ) printf( "B\n" ); else if( sc.sum * ScoreDivision >= 70 ) printf( "C\n" ); else if( sc.sum * ScoreDivision >= 60 ) printf( "D\n" ); else printf( "F\n" ); return 0; } 半角スペースを全角にしてください コンパイルしていないのであっているかわかりませんが
- Wr5
- ベストアンサー率53% (2173/4061)
>データを読み込み、配列に格納するのがキモのようですが、自分にはさっぱりわかりません。 >forやポインタを使ってみましたが全然できません。 どういうコードを書いて、どうダメだったのか……というのを掲示された方がよいかと。 努力の成果(経過?)を示せば、どこがダメだったのか、どうしたらいいのか…。などの回答が付きやすくなります。 そういったものを掲示せずに、 >どなたかプログラムを書いて説明してくださいませんか? とかやると「課題の丸投げ」と思われて回答貰えないとか心証悪くする場合もあります。 で、この類の質問だと… >学生の成績(出席点40点、中間試験100点、期末試験100点満点)を読み取り で構造体を使った例になりそうですね。(まぁ構造体の配列にはなるのですが) 「学生番号と国語・数学・英語の点数を読み込み~」とかいう例がC言語入門のサイトなどで見つかると思われるのでそういうところを探したら良いかと。 「struct student」辺りで検索するとそういう例はいろいろ引っかかるかと思われます。 # 定番だし。 >総合点を100点に圧縮 というのが…出題者の意図がわかりにくいですかねぇ…。 >出席点40点、中間試験100点、期末試験100点満点 なんで240点だったら100点となるような演算をしろってコトでしょう。 出席点40点・中間試験30点・期末試験50点の計120点なら、総合点は50点なんでしょうか。 出席点0点・中間試験100点・期末試験100点の計200点なら、総合点は83点?
- TooManyBugs
- ベストアンサー率27% (1472/5321)
丸投げでしたら業者に発注なさることをお薦めします。