• 締切済み
  • すぐに回答を!

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

共感・応援の気持ちを伝えよう!

  • 回答数9
  • 閲覧数135
  • ありがとう数0

みんなの回答

  • 回答No.9

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

共感・感謝の気持ちを伝えよう!

関連する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++の配列について

    #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って出たんですが、これは何をしているプログラムなんですか

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

    #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円なラ(意味ないな) マイナスなら(焼肉を食おう)

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

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

共感・感謝の気持ちを伝えよう!

  • 回答No.7

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

共感・感謝の気持ちを伝えよう!

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.5

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

共感・感謝の気持ちを伝えよう!

  • 回答No.4
  • asuncion
  • ベストアンサー率32% (1739/5376)

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

共感・感謝の気持ちを伝えよう!

  • 回答No.3

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.1

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • 高校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言語を始めたばかりですが、なかなか難しいです。

    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 です。 どうぞ宜しくお願い致します。

  • データの損失について

    はじめまして今回が初めての投稿になります、よろしくお願い致します。実はCの復習をかねて以下のようなプログラムを作ったのですが、なぜかjirouとsaburouの英語の点数が0と表示されてしまいます。tarouとshirouはきちんと表示されるのですが・・・ソフトはVisual C++6.0を使っていてコンパイルの際に「'const double ' から 'int ' に変換しました。データが失われているかもしれません。」と出ているのですがいまいち良くわかりません。もしよろしければご教授お願い致します。 #include<stdio.h> #define KAMOKU 3 main() { /*変数の宣言*/ int ten[4][3] = { {73,59,92}, {52,95.70}, {22.19,31}, {100,99,96} }; int goukei[4],i; double heikin[4]; char lank[4] = {'B','B','C','A'}; char shimei[4][10] = {"tarou","jirou","saburou","shirou"}; /*合計と平均の計算*/ for(i = 0;i < 4;i++){ goukei[i] = ten[i][0]+ten[i][1]+ten[i][2]; heikin[i] = (double)goukei[i]/KAMOKU; } /*表示*/ printf("氏名   国語 数学 英語 合計  平均 評価\n"); for(i = 0;i<4;i++){ printf("%-10s %5d %5d %5d %5d %7.1f %c\n",shimei[i],ten[i][0],ten[i][1],ten[i][2], goukei[i],heikin[i],lank[i]); } }

  • 素人目に見事なプログラム。

    public class test11 { public static void main(String[] args) { int[] [] points = new int[4][10]; points[0] = new int[] { 27, 53, 82, 77, 37, 61, 84, 72, 25, 91 }; points[1] = new int[] { 54, 76, 96, 39, 18, 45, 89, 92, 68, 88 }; points[2] = new int[] { 54, 69, 81, 57, 49, 67, 76, 81, 67, 89 }; for (int i = 0; i < points[0].length; i++) { points[3][i] = points[0][i] + points[1][i] + points[2][i]; } for (int i = 0; i<points[0].length; i++) { System.out.println("出席番号" + (i + 1) + "番の生徒の成績"); System.out.println("国語 :" + points[0][i]); System.out.println("数学 :" + points[1][i]); System.out.println("英語 :" + points[2][i]); System.out.println("合計 :" + points[3][i]); System.out.println("-----"); } } } 実行結果 C:\WORK>javac test11.java C:\WORK>java test11 出席番号1番の生徒の成績 国語 :27 数学 :54 英語 :54 合計 :135 ----- 出席番号2番の生徒の成績 国語 :53 数学 :76 英語 :69 合計 :198 ----- 出席番号3番の生徒の成績 国語 :82 数学 :96 英語 :81 合計 :259 ----- 出席番号4番の生徒の成績 国語 :77 数学 :39 英語 :57 合計 :173 ----- 出席番号5番の生徒の成績 国語 :37 数学 :18 英語 :49 合計 :104 ----- 出席番号6番の生徒の成績 国語 :61 数学 :45 英語 :67 合計 :173 ----- 出席番号7番の生徒の成績 国語 :84 数学 :89 英語 :76 合計 :249 ----- 出席番号8番の生徒の成績 国語 :72 数学 :92 英語 :81 合計 :245 ----- 出席番号9番の生徒の成績 国語 :25 数学 :68 英語 :67 合計 :160 ----- 出席番号10番の生徒の成績 国語 :91 数学 :88 英語 :89 合計 :268 ----- いつも大変お世話になっております。 教えてもらってばかりで恐縮です。 上記、Javaプログラムの件。 どうしてこうなるのか解りません。 どなたか解説してくれませんか? 真夜中にすみません。 ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • 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言語の勉強をしています。 プログラムを作成してみましたが、うまくいきません。 どこが間違っているのか、なぜそうなるのか、教えていただけると助かります。 よろしくお願いします。 あるクラスの試験の点数を整数で繰り返し入力し、点数の合計と平均点を出力するプログラムを作成しなさい。 点数は、0点以上100点以下とし、この範囲外の点(0点未満または100点より大きい点)が入力されたときは、入力を終了し、点数の合計と平均点を出力する(最後に入力された範囲外の点は集計の対象としない)。 また、平均は小数点以下2桁まで出力する。 繰り返しの命令は、何を使ってもよい。 ▼実行例 点数:10 点数:100 点数:20 点数:35 点数:120 合計:165点 平均: 41.25点 ******************************************* 考えたプログラム #include<stdio.h> int main(void) { int   ten,hito,goukei; double           heikin; goukei=0; hito=0; while(1){ printf("¥n点数:"); scanf ("%d", &ten); if(ten<0||100<ten) break; goukei=goukei+ten; hito=hito+1; break; } printf("¥n合計:%d点",goukei); heikin=(double)goukei/(double)hito; printf("¥n平均:%.2lf点",heikin); }

  • C++の配列について教えてください。

    C++の配列について教えてください。 なぜ平均のところだけ少数以下がすべて0になってしまうのでしょうか。 ご教授お願いします。 //--- ソース --- #include "stdafx.h" #include <stdio.h> int _tmain(int argc, _TCHAR* argv[]) { int no[100],ten1[100],ten2[100],ten3[100],i,n; double a[100]; scanf("%d", &n); for(i=0; i<n; i++) scanf("%d%d%d%d", &no[i], &ten1[i], &ten2[i], &ten3[i]); for (i=0; i<n; i++) { a[i] = (ten1[i] + ten2[i] + ten3[i]) / 3; } printf("番号 地理 歴史 日本史 平均\n"); for(i=0; i<n; i++) printf("%2d%8d%5d%4d%7.1f\n", no[i], ten1[i], ten2[i], ten3[i], a[i]); return 0; } //--- 実行結果 --- 10 1 35 57 45 2 57 69 67 3 74 65 84 4 45 67 39 5 26 67 29 6 86 77 57 7 13 26 67 8 98 85 58 9 54 50 34 10 45 63 19 番号 地理 歴史 日本史 平均 1 35 57 45 45.0 2 57 69 67 64.0 3 74 65 84 74.0 4 45 67 39 50.0 5 26 67 29 40.0 6 86 77 57 73.0 7 13 26 67 35.0 8 98 85 58 80.0 9 54 50 34 46.0 10 45 63 19 42.0 3.14159 3.14159

  • 配列 平均値と分散値

    #include <stdio.h> void mean_vari(int *s, int n, double *mean, double *variance); int main(void) { int i, n; int a[]={34, 54, 21, 80, 60, 90, 15, 24, 100}; double heikin, bunsan; mean_vari(&i,n,&heikin,&bunsan); printf("平均=%f 分散=%f\n",heikin,bunsan); return (0); } /* 合計を求める関数 */ void mean_vari(int *s, int n, double *mean, double *variance) { int i; int sum=0; /* 合計の初期化 */ double sum2=0; for (i = 0; i < n; i++) sum += s[i]; ????=sum/(double)????; for (i = 0; i < n; i++){ sum2 +=????; } ????=????; } 平均値と分散値を求めたいのですが、????の部分になりをいれていいかわかりません。 教えてください。

  • 配列受け渡し

    要素数nであるint型配列xから値がkである要素の添え字を返却する関数(ただし、値がkである要素が存在しなければ-1を返却するものとし、そのような要素が複数存在する場合は、先頭側の最も小さい添え字を返却する)を作成しています。 #include<iostream.h> #include<iomanip.h> int search(int x[],int n,int k) { int i,j; int result=-1; for(i=0;i<n;i++){ if(x[i]==k){ result=i; return(result); } else return(-1); } } int main(void) { const int ninzu = 5; int height[ninzu]; cout << ninzu << "要素:\n"; int i; for (i = 0; i < ninzu; i++) { cout << setw(2) << i+1 << "番目:"; cin >> height[i]; } cout << "検索要素は?:"; int target; cin >> target; int result=search(height, ninzu, target); if(result==-1) cout<<"ないよ"<<endl; else cout<<result+1<<"番目が"<<target<<endl; return (0); } このようにしたのですが、うまくいきません。また、複数の要素が発生したときの返却の仕方がわかりません。 どなたかアドバイス等よろしくお願いします。

  • C++で分からないプログラムがあるんですが

    ベクトルの加減を行うプログラムを作成せよ。 ベクトルの内積を求めるプログラムを作成せよ。 ↑作るプログラムは1つにする(1つにまとめる) 2つのベクトルを適当に初期化して行う事 これ、だれか教えてくれませんか?配列とforを使うんですが、配列も、1次元と2次元しかやってないですし。 こんな感じのレベルだと思うんですが… #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; } 本当に誰か助けてください。