こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

C++の配列についてなんですが

#include <iostream>
using namespace std;

int main() {

int i,goukei=0;
int kokugo[5];
float heikin;

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n";
cin >> kokugo[i];
goukei = goukei + kokugo[i];
}

heikin = (float)goukei/5.0;
cout << "平均点は" << heikin << "点です\n";

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i];
cout << "点で、平均との差は" << heikin-(float)kokugo[i] << "です\n";
}

return 0;

}

これを基に
数学の点数も入力する
数学の平均も出力する
国語と数学の総合的な平均点も出力する
ようにするにはどうすればいいんですか?

投稿日時 - 2009-11-06 23:25:59

QNo.5427537

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(9)

ANo.9

 このようなときには配列の要素を構造体にすると良いです。構造体でぐぐれば参考になるサイトを沢山見つけることができます。調べてみてください。

投稿日時 - 2009-11-08 12:09:55

ANo.8

>> こういう風にやったら出来たんですが、これじゃダメなんですか?

とおしゃられても われわれには分かりませんよ
この問題を出題した方に この回答でよいのかを判断してもらいましょう

『配列』を使うという目的での出題なら 50点ってとこかもしれません
もともとの題意が 入力されるデータに対して配列で記憶しておく というだけなら 合格なのかも
平均や合計についても 配列を用いるのであれば 残念賞 といったところでしょう

投稿日時 - 2009-11-08 04:24:22

ANo.7

>>こういう風にやったら出来たんですが、これじゃダメなんですか?

期待した動作に対して、期待通りの結果が出たのであれば問題ないと思うのでありますが。。。

これ以上、どんな回答を期待しているのだろう。。。
付け加えれば、floatでキャストしている所は全て要らないはず。

投稿日時 - 2009-11-07 18:06:20

ANo.6

国語と数学の入力された点数の合計を 国語の合計と数学の合計に分割しないと期待した結果にはなりませんよ

int goukei[2];
と宣言しておいて
国語の場合には
goukei[0] += kokugo[i];
数学の場合には
goukei[1] += suugaku[i];
といった具合に計算しましょう

平均や差分の計算時の変数も変更しましょうね

投稿日時 - 2009-11-07 14:47:07

補足

#include <iostream>
using namespace std;

int main() {

int i,k_goukei=0,s_goukei=0;
int kokugo[5];
int suugaku[5];
float k_heikin;
float s_heikin;

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n";
cin >> kokugo[i];
k_goukei = k_goukei + kokugo[i];
}

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の数学の成績を入力してください\n";
cin >> suugaku[i];
s_goukei = s_goukei + suugaku[i];
}

k_heikin = (float)k_goukei/5.0;
cout << "国語の平均点は" << k_heikin << "点です\n";

s_heikin = (float)s_goukei/5.0;
cout << "数学の平均点は" << s_heikin << "点です\n";

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i];
cout << "点で、平均との差は" << k_heikin-(float)kokugo[i] << "です\n";
}

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の数学の成績は" << suugaku[i];
cout << "点で、平均との差は" << s_heikin-(float)suugaku[i] << "です\n";
}

return 0;

}

こういう風にやったら出来たんですが、これじゃダメなんですか?

投稿日時 - 2009-11-07 16:51:45

ANo.5

>若干間違っているっぽいんですが、これでいいんですか?

『国語の平均点は112.4点です。』

常識的に考えて、平均点が 100点を越えた時点でおかしいですよね。

投稿日時 - 2009-11-07 09:58:09

ANo.4

>若干間違っているっぽいんですが、これでいいんですか?

手で計算した結果と一致していればOK、不一致ならばNG。
NGの場合、ソースコードのどこが間違っているかを調べて修正。これを「デバッグ」といいます。

投稿日時 - 2009-11-07 07:47:11

ANo.3

>これを基にするって事は変数とかも変えちゃいけないんですかね?

好きにすればいいです。なぜ変えちゃいけない、と思ったのかの方が不思議です。

>これでいいと思うんですがどうでしょうか?

コードを書いたら次はテストだ。結果はどうでしたか?

投稿日時 - 2009-11-07 00:41:14

補足

出席番号1番の国語の成績を入力してください
92
出席番号2番の国語の成績を入力してください
91
出席番号3番の国語の成績を入力してください
88
出席番号4番の国語の成績を入力してください
33
出席番号5番の国語の成績を入力してください
55
出席番号1番の数学の成績を入力してください
11
出席番号2番の数学の成績を入力してください
23
出席番号3番の数学の成績を入力してください
77
出席番号4番の数学の成績を入力してください
34
出席番号5番の数学の成績を入力してください
58
国語の平均点は112.4点です
数学の平均点は112.4点です
出席番号1番の国語の成績は92点で、平均との差は20.4です
出席番号2番の国語の成績は91点で、平均との差は21.4です
出席番号3番の国語の成績は88点で、平均との差は24.4です
出席番号4番の国語の成績は33点で、平均との差は79.4です
出席番号5番の国語の成績は55点で、平均との差は57.4です
出席番号1番の数学の成績は11点で、平均との差は101.4です
出席番号2番の数学の成績は23点で、平均との差は89.4です
出席番号3番の数学の成績は77点で、平均との差は35.4です
出席番号4番の数学の成績は34点で、平均との差は78.4です
出席番号5番の数学の成績は58点で、平均との差は54.4です

こんな感じに出ましたが、若干間違っているっぽいんですが、これでいいんですか?
国語数学で平均点が一緒なんですが

投稿日時 - 2009-11-07 01:03:38

ANo.2

「それがわからない」の「それ」とはなんですか?
今のソースコードにおいて, 「どこでなにをしているのか」は理解できていますか?

投稿日時 - 2009-11-07 00:15:50

補足

ごめんなさい。とりあえず、1番目と2番目はやってみましたが、これを基にするって事は変数とかも変えちゃいけないんですかね?それも変えちゃダメだと完全におしまいなんですが、変数変えるの有りなら、これでいいと思うんですがどうでしょうか?
それでも3番ができてないですが

#include <iostream>
using namespace std;

int main() {

int i,goukei=0;
int kokugo[5];
int suugaku[5];
float k_heikin;
float s_heikin;

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績を入力してください\n";
cin >> kokugo[i];
goukei = goukei + kokugo[i];
}

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の数学の成績を入力してください\n";
cin >> suugaku[i];
goukei = goukei + suugaku[i];
}

k_heikin = (float)goukei/5.0;
cout << "国語の平均点は" << k_heikin << "点です\n";

s_heikin = (float)goukei/5.0;
cout << "数学の平均点は" << s_heikin << "点です\n";

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の国語の成績は" << kokugo[i];
cout << "点で、平均との差は" << k_heikin-(float)kokugo[i] << "です\n";
}

for(i=0;i<5;i++) {
cout << "出席番号" << i+1 << "番の数学の成績は" << suugaku[i];
cout << "点で、平均との差は" << s_heikin-(float)suugaku[i] << "です\n";
}

return 0;

}

投稿日時 - 2009-11-07 00:19:26

ANo.1

>どうすればいいんですか?

まあ、最初はコードをコピペするところからですかね。
はい。補足にどうぞ。

投稿日時 - 2009-11-06 23:45:41

補足

それが分からないから聞いているんですが…

投稿日時 - 2009-11-07 00:01:19