![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
[問題]N人の生徒の期末試験の成績に対し、平均点と分散を求めることを考える。生徒の人数Nと、各々の3つの成績(数学・英語・国語)をキーボードから入力し、生徒1人1人の平均点と分散、および数学・英語・国語それぞれの平均点と分散を求めるプログラムを作りなさい。
なお生徒の人数は最大100人であり、成績は100点満点とする。また、平均点と分散は浮動小数点とすること。
これに対して私は以下のように作りました。
#include<stdio.h>
#include<math.h>
#define b<=100
void main(void){
int a,b,g,i;
int math[i];
int english[i];
int japan[i];
float h,z;
printf("生徒の人数を入力しなさい\n");
scanf("%d",&a);
for(i=0;i<a;i++){
printf("%d人目数学の点数を入力してください。\n",i);
scanf("%d",&math[i]);
}
for(i=0;i<a;i++){
printf("%d人目の英語の点数を入力してください。\n",i);
scanf("%d",&english[i]);
}
for(i=0;i<a;i++){
printf("%d人目の国語の点数を入力してください。\n",i);
scanf("%d",&japan[i]);
}
for(i=0;i<a;i++){
printf("%d人目の平均点は%fである\n",i,h);
h=(math[i]+english[i]+japan[i])/3;
printf("%d人目の分散は%fである\n",i,z);
g=(math[i]-h)*(math[i]-h)+(english[i]-h)*(english[i])+(japan[i]-h)*(japan[i]-h);
z=g/3;
}
}
…しかし、これではプログラムが走りませんでした。どこが違うのか指摘をよろしくお願いします。(ちなみに私はプログラムはほぼ初心者です笑)
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
「生徒1人1人の平均点と分散」の「分散」って, 何の分散を求めさせているんだろう. 教科ごとの点数の分散でいいんだろうか? ちょっと文章が謎だ.
余談:
いまどき (とはいえ 15年も前のなんだが) の C の規格では #1 のように書いてもいいんだけど, ふるくっさい規格に固執している処理系だとだめなんだよね.
No.2
- 回答日時:
うちのgccはコンパイル通したが、普通cは配列の宣言時に変数を大きさとして使えないらしい。
入門にはCなんかよりもpythonとか分かりやすい言語のほうが良いです。
#include<stdio.h>
#define b 100
void main(void){
int math[b];
int english[b];
int japan[b];
int a,g,i;
float h,z;
~~
for(i=0;i<a;i++){
h=(math[i]+english[i]+japan[i])/3;
printf("%d人目の平均点は%fである\n",i,h);
g=(math[i]-h)*(math[i]-h)+(english[i]-h)*(english[i]-h)+(japan[i]-h)*(japan[i]-h);
z=g/3;
printf("%d人目の分散は%fである\n",i,z);
}
}
お礼が遅れました。ありがとうございます。うまく走りましたが今度は分散の計算が複数人になるとうまくいかなくなってしまいました…
(ちなみにC言語は学校でやらされてるんですよね笑)
No.1
- 回答日時:
1. bは使っていないので消去。
2. int math[i];について、iは初期化されていないので不可能。english、japanについても同様。
3. int math[a];が正しいと思われる。aが格納された後に配列の初期化を。
以上より、プログラム冒頭は以下のように修正される。
#include<stdio.h>
#include<math.h>
void main(void){
int a,g,i;
float h,z;
printf("生徒の人数を入力しなさい\n");
scanf("%d",&a);
int math[a];
int english[a];
int japan[a];
ご回答ありがとうございます。箇条書きでとても分かりやすかったです!
…ですが"「constant expression」を付け忘れています。"とint math[a];の行で指摘されました。
もしよければでいいです。回答お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# C言語(構造体) 3 2022/07/05 20:08
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
strcmp
-
【C言語教えてください】sin波...
-
球の体積と表面積を表示するプ...
-
cshの文字列操作(0埋め)
-
10個出力で改行したいのですが...
-
ifなんですが
-
printf で二進表示を行いたい。
-
関数について
-
円の面積を求めるプログラミン...
-
Visual Sutdio 2017 でのC言語...
-
コマンドプロンプトがすぐ消える
-
C言語の配列問題について
-
c言語 成績表示のプログラムで...
-
(C言語)西暦年月日を入力して...
-
printfの出力内の文字をdefine...
-
コンパイルエラーについて
-
C言語で五目並べを作成している...
-
%P と %X の違い
-
2つ分数の四則演算を行うプロ...
-
hit&bolwのプログラミングがで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
strcmp
-
コンパイルエラーについて
-
c言語でAからZまでを表示する...
-
コマンドラインに出力した文字...
-
cshの文字列操作(0埋め)
-
4の倍数を論理演算で表す。。
-
C言語 プログラミング
-
%P と %X の違い
-
8人分のテストの点数を入力し、...
-
C言語での、年複利の計算方法...
-
printf( " %2d", p * q );
-
hit&bolwのプログラミングがで...
-
scanfに文字が入力されたときに...
-
error C2143: 構文エラー : ';'...
-
printfの出力内の文字をdefine...
-
テキストカーソル位置の取得
-
unsigned int型について
おすすめ情報