![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
c言語 構造体
C言語・C++・C#
-
C言語 構造体でつまずいています
C言語・C++・C#
-
構造体の勉強中です 合計点の高い順に並べ替えがわかりません
C言語・C++・C#
-
-
4
C言語初心者 構造体 課題について
C言語・C++・C#
-
5
printf で二進表示を行いたい。
C言語・C++・C#
-
6
HEWを使用しているのですが、このようなエラーが出ました。
C言語・C++・C#
-
7
c言語 16進数の2進数への変換
C言語・C++・C#
-
8
C言語の入力した文字を反転させるプログラミングの仕方が分かりません。
Ruby
-
9
C言語初心者 ポインタについて、お助けください、、
C言語・C++・C#
-
10
C言語 プログラミング
C言語・C++・C#
-
11
C言語初心者 構造体 課題について
C言語・C++・C#
-
12
構造体の要素すべてに対する四則演算の方法を教えてください.
C言語・C++・C#
-
13
16進数から2進数へ
C言語・C++・C#
-
14
再起呼び出しの回数をカウントするプログラム
C言語・C++・C#
-
15
C言語のfor文です。 繰り返しの中で文字を一つずつ増やしていくやり方を教えてください for(i=
C言語・C++・C#
-
16
C言語についてです 5人のテストの点数を入力すると 合計点、平均点、最高点、最低点を 出力するプログ
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP: 非ソケットに対するソ...
-
Expression: nptr != NULL
-
'printf':識別子が見つかりませ...
-
C言語のエラーについて
-
加減剰余のオーバーフローについて
-
C言語初心者です。計算がうまく...
-
第5調波や第3高調波って何です...
-
クレーンでのCFブレーキとな...
-
互いに素と負の数
-
一次遅れ系の制御における時定...
-
動揺装置は自作できますか?
-
モータの巻線係数って何でしょ...
-
反転増幅回路の周波数特性の理論値
-
SPI 非言語の問題です
-
SPI 非言語 教えてください
-
双安定マルチバイブレータについて
-
整合フィルタ(matched filter)...
-
数学の参考書に 「y=8x」は「y...
-
数学Aの問題です。 答えは、左...
-
交流、パルス波、バースト波
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語プログラミングで初項を1....
-
Expression: nptr != NULL
-
C言語のエラーについて
-
プログラミングが分かりません。
-
C言語 コンパイルエラー(文字...
-
C言語初心者です。計算がうまく...
-
C言語で自作ヘッダーを作ったの...
-
C言語のソースコードについて教...
-
加減剰余のオーバーフローについて
-
分割コンパイルの手順と方法に...
-
プログラムがエラーが出る原因
-
'printf':識別子が見つかりませ...
-
C言語:2つの複素数(分数)の四...
-
TCP/IP: 非ソケットに対するソ...
-
getch / putch用のヘッダ
-
doubleからintへのキャスト
-
コンソールAPIのSetConsoleScre...
-
3×3のラテン方陣をつくるプログ...
-
リターンキー又は、スペースキ...
-
コンパイルエラー (超初心者...
おすすめ情報
"r"でもファイルが開けませんとでてしまいました
ファイルの部分はもともと示されており、そこは動かせないのであっていると思います。
なのにできないのです