多重ループを用いて、クラス数、生徒数,生徒の点数を入力したときに、各クラスの平均点,
及びクラス全体の平均点を算出するプログラムを作成しているのですが、どこが間違えているかわかりません。どなたか間違えているところ、答えを教えて頂けないでしょうか。
これが、自分で作成したプログラムです。
#include<stdio.h>
int main(void){
int a,b,c=0,i,j,sum=0;
double ave=0;
printf("クラス数を入力してください:"); scanf("%d",&a);
printf("生徒数を入力してください:"); scanf("%d",&b);
for(i=1; i<=a; i++){
for(j=1; j<=b; j++){
printf("クラス%d:%d人目の点数を入力してください:",i,j,c); scanf("%d",&c);
sum=sum+c;
}
printf("クラス%dの平均点は%fです。\n",i,ave=sum/b);
}
printf("クラス全体の平均は%dです。",i,ave/a);
return 0;
}
No.1
- 回答日時:
for(i=1; i<=a; i++){
sum = 0; //クラスiの合計点数を0クリア
for(j=1; j<=b; j++){
}
printf("クラス%dの平均点は%fです。\n",i, sum/b);
}
>クラス全体の平均点
設問の解釈として、クラス毎に生徒数が異なるという事はないのでしょうか?
それと、通常はクラス平均値をクラス数で割って、平均値を求める事はしません。
No.2
- 回答日時:
「どこが間違えているかわかりません」とのことですが, そのように考えるということは
なにが間違っているのかはわからないけどなにかが間違っていると思っている
ということですよね. では, なぜ「このプログラムが間違っている」と思ったのですか?
クラス数、生徒数を2と入力したとき、クラス1の点数を2人分入力したときの平均の値はちゃんとした値が出るのですが、クラス2の点数を2人分入力したときの平均の値はクラス1と2の合計の数値を生徒数(2人分)で割った数が出たので間違っていると思いました。
No.3
- 回答日時:
>答えを教えて頂けないでしょうか。
えっとプログラムは正しく動かすために「デバッグ」と言うことを行います。
プログラムはデバッグをする行為がプログラミング行為と言っても過言ではありません。
ですので、例えばですが、プログラム実行中のある時点で、自分が期待しているように処理が流れているか、その時に各変数が期待している通りの値になっているか、要所要所で情報を出力してみることです。
今後二度とC言語のプログラムを社会にでて触らないのであれば答えだけ得られればいいのかもしれませんが、基礎教科と違って情報は実践的な力を身につけなければ意味ないですよね。
No.4ベストアンサー
- 回答日時:
とりあえず、追加、修正した箇所にコメントいれてあります。
#include<stdio.h>
int main(void){
int a,b,c=0,i,j,sum=0;
int allsum = 0; //追加
double ave=0;
printf("クラス数を入力してください:"); scanf("%d",&a);
printf("生徒数を入力してください:"); scanf("%d",&b);
for(i=1; i<=a; i++){
sum = 0; //追加
for(j=1; j<=b; j++){
printf("クラス%d:%d人目の点数を入力してください:",i,j,c); scanf("%d",&c);
sum=sum+c;
allsum=allsum+c; //追加
}
printf("クラス%dの平均点は%fです。\n",i,ave=sum/b);
}
printf("クラス全体の平均は%fです。\n",ave=allsum/(a*b)); //修正
return 0;
}
No.5
- 回答日時:
#include <stdio.h>
int c_sum(int nsu)
{
int sum;
int sc;
int n;
sum = 0; // 1クラス分の得点合計の初期化
for (n = 0; n < nsu; n++)
{
printf("%d 人めの成績 :\n", n + 1);
scanf("%d", &sc);
sum += sc;
}
return (sum);
}
int main()
{
int m;
int csu;
int nsu;
int sum;
int g_nsu; // 全クラス人数合計
int g_sum; // 全クラス得点合計
double ave;
printf("クラス数:\n");
scanf("%d", &csu);
// printf("クラス %d の生徒数:\n", m);
// scanf("%d", &nsu);
g_nsu = 0;
g_sum = 0;
for (m = 1; m <= csu; m++)
{
printf("クラス %d の生徒数:\n", m);
scanf("%d", &nsu);
sum = c_sum(nsu);
g_nsu += nsu;
g_sum += sum;
printf("クラス %d の合計 : %d\n", m, sum);
printf("クラス %d の人数 : %d\n", m, nsu);
ave = (double)sum / (double)nsu;
printf("クラス %d の平均 : %lf\n\n", m, ave);
}
printf("全クラスの合計 : %d\n", g_sum);
printf("全クラスの人数 : %d\n", g_nsu);
ave = (double)g_sum / (double)g_nsu;
printf("全クラスの平均 : %lf\n", ave);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列の重複する値とその個数を...
-
java eclipse 型に解決できません
-
packageとimport の違いって?
-
自作のクラスファイルがインポ...
-
IPアドレスのクラスAを取得して...
-
クラスモジュールの使い方が詳...
-
体育祭クラス全員参加のムカデ...
-
同じクラスにならない確率を教...
-
UMLのクラス図はmain()も含むん...
-
IPアドレスの3バイト目の呼び方
-
正規表現を使った小数入力チェ...
-
シングルページでのカレント表...
-
クラス名の「~Factory」って何?
-
.NET Compact Framework で文字...
-
複数のクラスで共通した関数を...
-
Lsit<LabelValueBean>について
-
現在または将来、需要のある言...
-
A・B・Cクラスとは?
-
イトマンスイミング、ベビーク...
-
重複エラーを解決するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列の重複する値とその個数を...
-
どこからも呼ばれていない無意...
-
java eclipse 型に解決できません
-
「天声人語」をインターネット...
-
main()を持つクラスが2つ以上...
-
1 つのヘッダファイルに複数の...
-
IPアドレスのクラスAを取得して...
-
同一パッケージにあるクラスが...
-
同じクラスにならない確率を教...
-
重複エラーを解決するには
-
共通で使う関数を集めたクラス...
-
3年間同じクラスになる確率
-
複数のクラスで共通した関数を...
-
同じパッケージ、クラス名が含...
-
A・B・Cクラスとは?
-
自作のクラスファイルがインポ...
-
ATLとMFCの違いは何でしょうか?
-
eclipse でクラスに色
-
コンボボックスのマウスホイー...
-
UMLのクラス図はmain()も含むん...
おすすめ情報