
5人の学生の成績を,構造体Scoreの配列に 保存するプログラムを作成します.
・main関数で各学生の合計点,合計が最高の学生
・calcAvg関数で英語,数学,物理の平均点 を求めていきます.
ここまでやったのですが、出力するとファイルが開けませんと出てきてしまいます。
どこが違うか教えていただけないでしょうか。
#include<stdio.h>
#include<stdlib.h>
typedef struct
{
char name[32];
int english;
int math;
int physics;
}Score;
void calcavg(Score *p)
{
double eng_avg = 0;
double mat_avg = 0;
double phy_avg = 0;
int i;
for (i = 0; i < 5; i++) {
eng_avg += (p + i)->english;
mat_avg += (p + i)->math;
phy_avg += (p + i)->physics;
}
printf("5人の英語の平均点は%.1fです\n", eng_avg / 5);
printf("5人の数学の平均点は%.1fです\n", mat_avg / 5);
printf("5人の物理の平均点は%.1fです\n", phy_avg / 5);
}
int main(void)
{
int i;
Score s[5];
FILE *fp = fopen("scores.txt", "rt");
if (!fp) {
printf("ファイルが開けません");
exit(0);
}
for (i = 0; i < 5; i++)
fscanf(fp,"%s %d %d %d", s->name, &s->english, &s->math, &s->physics);
for (i = 0; i < 5; i++)
printf("%sさんの英語の点は%d,数学の点は%d,物理の点は%dです\n", s->name, s->english, s->math, s->physics);
int highest = 0;
int max_total = 0;
for (i = 0; i < 5; i++) {
int total = max_total + s[i].english + s[i].math + s[i].physics;
printf("%sさんの合計点は%dです\n", s[i].name, total);
if (highest < total)
highest = i;
}
printf("最も成績がよい学生は%sさんです\n", s[highest].name);
calcavg(s);
fclose(fp);
return 0;
}
No.2ベストアンサー
- 回答日時:
ファイルオープンの処理は問題ありません。
どうしても開けない場合はファイルを絶対パス指定にするとか
例えば、Cドライブ直下なら
FILE *fp = fopen("C:\\score.txt", "rt");
のように。
fscanfの処理に誤りがあります。正しく取り込みできません。
3教科の合計点の計算と、合計が最高の学生の更新がうまくいっていないですね。
(highestとmax_totalの更新が正しくできていない)
ファイルオープン後~calcavg()呼び出し前を以下のようにすれば、当方の環境では動作確認できています。
for (i = 0; i < 5; i++)
fscanf(fp, "%s %d %d %d", s[i].name, &s[i].english, &s[i].math, &s[i].physics);
for (i = 0; i < 5; i++)
printf("%sさんの英語の点は%d,数学の点は%d,物理の点は%dです\n", s[i].name, s[i].english, s[i].math, s[i].physics);
int highest = 0;
int max_total = 0;
for (i = 0; i < 5; i++) {
int total = s[i].english + s[i].math + s[i].physics;
printf("%sさんの合計点は%dです\n", s[i].name, total);
if (max_total < total) {
max_total = total;
highest = i;
}
}
printf("最も成績がよい学生は%sさんです\n", s[highest].name);
No.3
- 回答日時:
scores.txt
とかいうファイルが「しかるべきところ」になければそうなる.
本当に「正しい, あるべきばしょ」にあるんですか? それはどうやって確認しましたか?
といちおう書いてはおくけど,
https://oshiete.goo.ne.jp/qa/11661753.html
(and others) も考慮すると
・マイクロソフトの処理系は捨てる
・統合環境は使わない
のが適切ではないかとすら思うなぁ....
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP: 非ソケットに対するソ...
-
リターンキー又は、スペースキ...
-
火力発電 蒸気タービンのMSV、C...
-
互いに素と負の数
-
クレーンでのCFブレーキとな...
-
FIRフィルタ タップ数の求め方
-
矩形波のスペクトラムについて
-
整合フィルタ(matched filter)...
-
電気回路の「干渉を引き起こす...
-
一次遅れ系の制御における時定...
-
油圧式エレベーター
-
分析データ(クロマトグラムな...
-
パルス波の表皮効果
-
入力容量(Input Capacitance)...
-
正弦曲線と波形の違いを教えて...
-
モータの巻線係数って何でしょ...
-
油圧装置のエアーブリーザーに...
-
オシロスコープからパソコンに...
-
負帰還回路・・
-
矩形パルス外力の応答が、最大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語プログラミングで初項を1....
-
Expression: nptr != NULL
-
リターンキー又は、スペースキ...
-
プログラムがエラーが出る原因
-
加減剰余のオーバーフローについて
-
C言語教えてください。
-
プログラミングが分かりません。
-
C言語のエラーについて
-
C言語 コンパイルエラー(文字...
-
C言語のソースコードについて教...
-
C言語初心者です。計算がうまく...
-
'printf':識別子が見つかりませ...
-
TCP/IP: 非ソケットに対するソ...
-
doubleからintへのキャスト
-
アセンブリプログラムで特定の...
-
Linux Ubuntu18.04.3でTcoipに...
-
分割コンパイルの手順と方法に...
-
C++ なのですがエラーが消えません
-
コンソールAPIのSetConsoleScre...
-
C言語:2つの複素数(分数)の四...
おすすめ情報
"r"でもファイルが開けませんとでてしまいました
ファイルの部分はもともと示されており、そこは動かせないのであっていると思います。
なのにできないのです