前提・実現したいこと
10人の3つの教科の点数をランダムで生成し、合計得点で並べ替え 各教科ごとに平均を表示したい
発生している問題・エラーメッセージ
ソースコードを実行したところ以下のエラーが出ました
コード
report1.cpp:91:4: error: expected unqualified-id before '{' token 91 | { | ^ report1.cpp:122:23: error: cannot define member function 'Calculation::Print::print' within 'Calculation' 122 | void Print::print()//print() | ^ report1.cpp:152:5: error: expected '}' at end of input 152 | } | ^ report1.cpp:81:20: note: to match this '{' 81 | class Calculation{// ^ report1.cpp:152:5: error: expected unqualified-id at end of input 152 | }
該当のソースコード
c++
#include<iostream> #include<iomanip> #include<math.h> #include<random> using namespace std; class Student{ int i; public: char student[5][10]; int eng[10]; int math[10]; int jan[10]; int total[10]; Student(); }; Student::Student() { random_device rnd; mt19937 mt(rnd()); uniform_int_distribution<> rand101(0,100); for(i=0;i<10;i++){ eng[i]=rand101(mt); math[i]=rand101(mt); jan[i]=rand101(mt); } for(i=0;i<10;i++){ total[i]=eng[i]+math[i]+jan[i]; } } class sorting{ //ソーティングクラス宣言 /****************************************/ /*int 型変数の説明(private) */ /*key : 合計のデータのソートに使用する格納箱 */ /*key_sub : 実際の合計値のソートをもとに、 添え字のソートを行うための格納箱*/ /****************************************/ private: int key,key_sub; /****************************************/ /*int 型変数の説明(public) */ /*sub[10] : 生徒 10 人の合計の添字を格納する配列*/ /****************************************/ public: int sub[10]; sorting(); //データのソートを行うコンストラクタ関数 }; sorting::sorting() //sorting()の定義 { Student stu; //Student クラスの呼び出し int array[10]; for(int i=0; i<10; i++){ //予め sub[]に添え字を格納 sub[i] = i; } for(int i=0; i<10; i++){ //総当りを用いた単純ソート for(int j=0; j<10; j++){ if(stu.total[i] > stu.total[j]){ //以下、合計値のソートと並列して添字のソートも行っている key = stu.total[j]; stu.total[j] = stu.total[i]; stu.total[i] = key; key_sub = sub[j]; sub[j] = sub[i]; sub[i] = key_sub; } } } } class Calculation{//計算用クラスの宣言 /*******************************************************/ /*double 型変数の説明(private) */ /*a_ave[4] : 各3科目、合計の平均を[0]~[3]順に格納する配列 */ private: int a_add; double a_ave[4]; public: double ave();//各 3 科目、合計の平均を計算する関数 { Student stu; //Student クラスの呼び出し //各 3 科目、合計の 10 人分の合計を格納する変数にそれぞれ 0 を初期値設定 int sum_eng = 0, sum_math = 0, sum_jan = 0, sum_total = 0; for(int i=0; i<10; i++){//繰り返し処理でそれぞれ加算していく sum_eng += stu.eng[i]; sum_math += stu.math[i]; sum_jan += stu.jan[i]; sum_total += stu.total[i]; } //それぞれの合計を母数で割り、平均を出す a_ave[0] = sum_eng / 10.0; a_ave[1] = sum_math / 10.0; a_ave[2] = sum_jan / 10.0; a_ave[3] = sum_total / 10.0; //結果を表示する cout << fixed << setprecision(1) << " Avg" << " " << a_ave[0] << " " << a_ave[1] << " " << a_ave[2] << " " << a_ave[3] << " " << endl; return 0; } class Print{//表示用クラス public: void print();//ソート済みの生徒の成績を表示する関数 }; void Print::print()//print()の定義 { Student stu;//Student クラスの呼び出し sorting sorted;//soting クラスの呼び出し //一行目のラベルの表示 cout << "ID_No " << " Eng " << "Math " << "jan " << "Total" << endl; //ソート済みの成績を表示() for(int i=0; i<10; i++){ if(sorted.sub[i]<9){ cout << "t900" << sorted.sub[i]+1 << " " << stu.eng[sorted.sub[i]] << " " << stu.math[sorted.sub[i]] << " " << stu.jan[sorted.sub[i]] << " " << stu.total[sorted.sub[i]] << endl; }else{ cout << "t90" << sorted.sub[i]+1 << " " << stu.eng[sorted.sub[i]] << " " << stu.math[sorted.sub[i]] << " " << stu.jan[sorted.sub[i]] << " " << stu.total[sorted.sub[i]] << endl; } } } int main() //main()を宣言 { Student stu; //Student クラスの呼び出し Calculation cal; //Calculation クラスの呼び出し Print show; //Print クラスの呼び出し sorting Sort; //sorting クラスの呼び出し show.print(); //ソート済みの成績データを表示 cout << "***************************" << endl; cal.ave(); //平均を、計算、表示 return 0; }
...ダメダメですね。コンパイルに成功したとしても、期待する結果は得られないでしょう。
教本読み直すことをお勧めします。
回答2件
あなたの回答
tips
プレビュー