
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ランキング
-
'printf':識別子が見つかりませ...
-
C言語初心者です。計算がうまく...
-
コマンドライン引数について。
-
プログラミングが分かりません。
-
クレーンでのCFブレーキとな...
-
順列、4桁の整数をつくる問題
-
互いに素と負の数
-
16進数を正負反転する方法
-
マンションのデータ流用
-
SPI 非言語の問題です
-
大学の線形代数についての質問...
-
火力発電 蒸気タービンのMSV、C...
-
モータの巻線係数って何でしょ...
-
三相発電機(オルタネーター)...
-
無安定マルチバイブレータにつ...
-
物理の波についてです 時刻12/8...
-
オシロの波形から発振周波数を...
-
オシロスコープを起動しただけ...
-
図形問題、三平方の定理 添付画...
-
二つの波形の合致を調べる方法は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Expression: nptr != NULL
-
リターンキー又は、スペースキ...
-
getch / putch用のヘッダ
-
TCP/IP: 非ソケットに対するソ...
-
アセンブリプログラムで特定の...
-
C言語プログラミングで・・・
-
C言語のエラーについて
-
'printf':識別子が見つかりませ...
-
C言語 コンパイルエラー(文字...
-
c言語プログラミングで初項を1....
-
c言語についての質問です。
-
加減剰余のオーバーフローについて
-
最も文字数が多い行番号と文字...
-
コンソールAPIのSetConsoleScre...
-
C言語で自作ヘッダーを作ったの...
-
プログラミングが分かりません。
-
C言語のソースコードについて教...
-
クレーンでのCFブレーキとな...
-
SPI 非言語の問題です
-
複数のシリンダーの同調化にコ...
おすすめ情報
"r"でもファイルが開けませんとでてしまいました
ファイルの部分はもともと示されており、そこは動かせないのであっていると思います。
なのにできないのです