• 締切済み

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; } これを基に 数学の点数も入力する 数学の平均も出力する 国語と数学の総合的な平均点も出力する ようにするにはどうすればいいんですか?

noname#127615
noname#127615

みんなの回答

回答No.9

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

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.8

>> こういう風にやったら出来たんですが、これじゃダメなんですか? とおしゃられても われわれには分かりませんよ この問題を出題した方に この回答でよいのかを判断してもらいましょう 『配列』を使うという目的での出題なら 50点ってとこかもしれません もともとの題意が 入力されるデータに対して配列で記憶しておく というだけなら 合格なのかも 平均や合計についても 配列を用いるのであれば 残念賞 といったところでしょう

回答No.7

>>こういう風にやったら出来たんですが、これじゃダメなんですか? 期待した動作に対して、期待通りの結果が出たのであれば問題ないと思うのでありますが。。。 これ以上、どんな回答を期待しているのだろう。。。 付け加えれば、floatでキャストしている所は全て要らないはず。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.6

国語と数学の入力された点数の合計を 国語の合計と数学の合計に分割しないと期待した結果にはなりませんよ int goukei[2]; と宣言しておいて 国語の場合には goukei[0] += kokugo[i]; 数学の場合には goukei[1] += suugaku[i]; といった具合に計算しましょう 平均や差分の計算時の変数も変更しましょうね

noname#127615
質問者

補足

#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; } こういう風にやったら出来たんですが、これじゃダメなんですか?

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.5

>若干間違っているっぽいんですが、これでいいんですか? 『国語の平均点は112.4点です。』 常識的に考えて、平均点が 100点を越えた時点でおかしいですよね。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.4

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

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.3

>これを基にするって事は変数とかも変えちゃいけないんですかね? 好きにすればいいです。なぜ変えちゃいけない、と思ったのかの方が不思議です。 >これでいいと思うんですがどうでしょうか? コードを書いたら次はテストだ。結果はどうでしたか?

noname#127615
質問者

補足

出席番号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です こんな感じに出ましたが、若干間違っているっぽいんですが、これでいいんですか? 国語数学で平均点が一緒なんですが

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

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

noname#127615
質問者

補足

ごめんなさい。とりあえず、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; }

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

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

noname#127615
質問者

補足

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

関連するQ&A

  • C++で10進数→2進数に

    C++で10進数を2進数に変換するプログラムを 順番通りに表示できるようにする っていうのを配列を使って作るんですが 下はあまり関係ないですが、こんな感じのが参考になるかなと思ったんですが、どうすればいいんですか #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; }

  • C言語を始めたばかりですが、なかなか難しいです。

    C言語を始めたばかりですが、なかなか難しいです。 下記のプログラムですが、誤りを指摘して頂けないでしょうか? /************************************************************************ 合計と平均を求める ************************************************************************/ #include <stdio.h> #define KAMOKU 3 main() { int ten[KAMOKU]={73,59,92}; /*得点*/ int goukei=0; /*合計点*/ double heikin; /*平均点*/ char shimei[20]="太郎"; /*氏名*/ char kamokuName[KAMOKU][10]={"国語","数学","英語"}; int i; /*科目数*/ /*合計点と平均点の算出*/ for(i = 0; < KAMOKU;i++) { goukei+=ten[i]; } heikin=(double)goukei / i; /*画面に表示*/ printf("氏名:%s\n",shimei); for(i = 0; < KAMOKU;i++) { printf("%-6s:%3d点\n",kamokuName[i],ten[i]); } printf("\n"); printf("%sさんの合計:%3d点 平均:%5.1f点\n",shimei,goukei,heikin); エラーメッセージは for.c: In function ‘main’: for.c:18: error: expected expression before ‘<’ token for.c:27: error: expected expression before ‘<’ token です。 どうぞ宜しくお願い致します。

  • 学校の課題で悩んでます

    #include <stdio.h> void main(){ float syushi[7],goukei,heikin; int i; goukei = 0; for( i=1; i<=7; i++ ){ printf("%dの収支は?\n",i); scanf("%f",&syushi[i-1]); goukei =goukei+syushi[i-1]; } heikin = goukei / 7.0; printf("7日分の平均収支: %f円\n",heikin); } 1週間分の合計収支が 20万円より大きかったら(ぼろ勝ち) 20万円以下で0円より大きいかったら(まあいいか) 0円なラ(意味ないな) マイナスなら(焼肉を食おう)

  • 高校1年生のプログラング問題で分からない点があります><先週からCについて学びはじめました

    こんばんは。最近C言語について学びはじめた高校生です。 ある程度学校の授業で学習するのですが、明日から実際にプログラミングを始めるみたいです。 予習しようと思い、visualC++をインストールして練習しております。 そこで、いくつか思い通りにいかない問題がありましたのでご回答、アドバイスなどいただけると嬉しいです。 内容はC言語の基礎中の基礎だと思います>< 「1」 5個の整数データを配列に代入にそれらの合計と平均を求めるプログラムをつくれ。 「2」 問「1」のデータの最大値を求めるプログラムをつくれ。 「3」 問「1」の5つのデータを大きい順に並べ変えろ。 というみっつの問題です。 C言語は先週から学びはじめたばかりなのでまだまだ知識不足ですが、 下記に一番を自分なりに作ってみました。 #include <stdio.h> int main (void) { int box[5]={0,0,0,0,0}; int goukei,i; float heikin; goukei=0; for(i=1;i<=5;i++){ scanf("%d",&i); goukei=goukei+i; } heikin=(float)heikin/5.0; printf("合計は%d",goukei); printf("平均は%f",heikin); return0; } やはり思い通りの結果が出ず困っております。 正答とアドバイスいただけると嬉しいです。 よろしくおねがいします。

  • C++の配列について

    #include <iostream> using namespace std; int main() { float w[] = {1.2,2.3,3.4,4.5,5.6}; float x[] = {4.8,2.6,1.3,9.1,8.7}; float u = 0.0; int i; for(i=0;i<5;i=i++) { u += w[i] * x[i]; } cout << "u=" << u << "です\n"; return 0; } u=105.83って出たんですが、これは何をしているプログラムなんですか

  • C++での平均値

    クラスのテストの点数(0点から100点)の平均をだすプログラムをwhile文を使って造っています。最後の割り算の部分を演算子/を使わずに計算したいのですが、どうすればよいですか。 #include <iostream.h> void main(void) { int goukei = 0; int i=1; do { goukei += i; i++; }while( i<=100 ); int kotae; kotae=goukei/100; cout << kotae; }

  • C言語による構造体の値渡しについて

    以下プログラムを作成しました。 1.read_file関数によりファイルを読み込み。 2.avg_kokugo関数により、国語の平均点を出す。 という流れで組まれているのですが、 1.read_file関数実行時に、dat構造体を渡しています。 2.read_file関数内で、fscanfによる読み込みを行い、dat[i].name,&dat[i].kokugo,&dat[i].sansuに格納しているみたいに感じます。 ここで、疑問なのが、 「構造体を値渡しでdatをread_file関数に渡してる」と思っているのですが、 「read_file関数から、値渡しで渡された構造体datに、値を格納することはできるのでしょうか?」 本を参考にして勉強していたのですが、 「構造体は、値渡しの時に読み込みはできるが、更新はできない」 と書かれていたのです。(ポインタ参照渡しの時は可能。) なぜ今回、read_file関数から、構造体datに値の格納ができるのでしょうか? 更新と新規格納は意味が異なるからなのでしょうか? ご教授よろしくお願いします。 <ソース> #include <stdio.h> //グローバル #define FNAME "test.txt" struct score{ char name[20]; int kokugo; int sansu; }; int read_file(struct score dat[],int n); float avg_kokugo(struct score dat[],int n); int main(void){ struct score dat[3]; int ret; float kokugo; float sansu; ret= read_file(dat,3); if(ret <0){ return 0; } kokugo = avg_kokugo(dat,3); printf("国語の平均 %.1f\n",kokugo); return 0; } int read_file(struct score dat[],int n){ FILE *fp; //ファイルポインタ int i; fp=fopen(FNAME,"r"); if(fp==NULL){ printf("ファイルをオープンできませんでした。\n"); return -1; //-1によるプログラム強制終了 } //データ読み込み i=0; //datに保存していく。 while((fscanf(fp,"%s%d%d",dat[i].name,&dat[i].kokugo,&dat[i].sansu)) != EOF){ i=i+1; //ファイル件数読み込み } fclose(fp); return 0; } float avg_kokugo(struct score dat[],int n){ int sum; //合計 float answer; int i; sum=0; for(i=0;i<n;i++){ sum = sum + dat[i].kokugo; } //平均点を求める answer =(float)sum / (float)n; return answer; }

  • C言語のポインタ配列について

    ポインタ配列を使って、各組(横一列が1組)の最高点と平均点、学年平均を表示するプログラムを考え中です。 各組の最高点を求める部分をどのように書けばいいのか迷ってます。 下記のプログラムでマズイ部分などありましたら教えていだたきたいです。 #include <stdio.h> int main(void) {   int ten1[] = { 52, 38, 79, 89, 57, 71, 90, -999};   int ten2[] = { 67, 89, 56, 45, 91, -999};   int ten3[] = { 89, 34, 67, 65, 67, 55, -999};   int* p[3];   int k;   int i;   int sum;   int total;   float ave;   int nin = 18;      p[0] = ten1;   p[1] = ten2;   p[2] = ten3;      total = 0;   for (k = 0; k < 3; k++)   {     i = 0;     sum = 0;     while (p[k][i] != -1)     {       sum += p[k][i];       i++;     }     ave = ave = (float)total / 3;     total += sum;     printf("平均点%3.1f\n", ave);   }   ave = (float)total / nin;   printf("学年平均点:%3.1f\n",ave);      return 0; }

  • c言語 構造体

    大学での内容なのですが,『名前,数学の点数,英語の点数,国語の点数を格納できる(メンバに持つ)構造体を宣言し,この構造体の配列を用いて,3人分の情報をキーボードから入力後,各科目の平均点を画面に表示するプログラムを作成せよ.』という問題で,自分なりに作ってみたのですがうまくいきません.どなたか教えていただけませんか? 一応自分で作ったものを下に載せておきます. ================================================================ #include <stdio.h> #include <string.h> struct test { char name[20]; int sugaku; int eigo; int kokugo; }; int main(void) { struct test suzuki; int (suzuki.sugaku), (suzuki.eigo), (suzuki.kokugo); strcpy(suzuki.name, "Suzuki"); printf("氏名:鈴木 一馬\n"); printf("数学:"); scanf("%d", &suzuki.sugaku); printf("英語:"); scanf("%d", &suzuki.eigo); printf("国語:"); scanf("%d", &suzuki.kokugo); struct test tanaka; int tanaka.sugaku, tanaka.eigo, tanaka.kokugo; strcpy(tanaka.name, "Tanaka"); printf("氏名:田中 二郎\n"); printf("数学:"); scanf("%d", &tanaka.sugaku); printf("英語:"); scanf("%d", &tanaka.eigo); printf("国語:"); scanf("%d", &tanaka.kokugo); struct test yamamoto; int yamamoto.sugaku, yamamoto.eigo, yamamoto.kokugo; strcpy(yamamoto.name, "Yamamoto"); printf("氏名:山本 三弘\n"); printf("数学:"); scanf("%d", &yamamoto.sugaku); printf("英語:"); scanf("%d", &yamamoto.eigo); printf("国語:"); scanf("%d", &yamamoto.kokugo); printf("数学の平均点は%dです。\n", ((suzuki.sugaku + tanaka.sugaku + yamamoto.sugaku) / 3.0)); printf("英語の平均点は%dです。\n", ((suzuki.eigo + tanaka.eigo + yamamoto.eigo) / 3.0)); printf("国語の平均点は%dです。\n", ((suzuki.kokugo, + tanaka.kokugo + yamamoto.kokugo) / 3.0)); return (0); } ================================================================

  • C言語/プログラミング

    int Sutar(int i, int j) { for (i = 1; i <= 5; i++) { for (j = 0; j < i; j++) { cout << "★¥n"; } cout << "¥n"; } return i, j; } int main() { int i; cout << "★を何個出力しますか?¥n"; cin >> i; cout << "★を" << Sutar(i, j) << "個出力に成功しました。¥n"; return 0; } これで、実行したらエラー発生しました。エラーを治す方法を教えてください。

専門家に質問してみよう