A,B,C,Dの4人がいて、彼らがある4つの問題を解いた点数(5点満点)をまず関連付けます。プログラムを実行させると、まずA~Dを入力するようにいわれます。どれかを打ったら、その人がとった点数が4つ並べて以下のように表示されます。
※Cと打った場合
C
名前:C
第一問:4
第二問:1
第三問:5
第四問:2
以上のようなプログラムを組みたいです。分割しない状態ではうまくいったのですが、分割したらうまくいかなくなってしまいました。エラーは以下です。コンパイラはborlandを使用しました。
以上宜しくお願いします
person.cpp:
エラー E2303 person.h 5: 型名が必要
エラー E2139 person.h 5: 宣言に ; がない
エラー E2293 person.h 14: ) が必要
エラー E2303 person.h 15: 型名が必要
エラー E2238 person.h 15: 'Person::string' の宣言が複数見つかった
エラー E2344 person.h 5: 一つ前の 'Person::string' の定義位置
エラー E2139 person.h 15: 宣言に ; がない
エラー E2380 person.cpp 9: 文字列または文字定数が閉じていない(関数 Person::Show() )
エラー E2379 person.cpp 10: ステートメントにセミコロン(;)がない(関数 Person::Show() )
エラー E2380 person.cpp 10: 文字列または文字定数が閉じていない(関数 Person::Show() )
エラー E2380 person.cpp 11: 文字列または文字定数が閉じていない(関数 Person::Show() )
エラー E2380 person.cpp 12: 文字列または文字定数が閉じていない(関数 Person::Show() )
エラー E2380 person.cpp 13: 文字列または文字定数が閉じていない(関数 Person::Show() )
エラー E2451 person.cpp 21: 未定義のシンボル name(関数 Person::Person() )
エラー E2380 person.cpp 21: 文字列または文字定数が閉じていない(関数 Person::Person() )
エラー E2379 person.cpp 22: ステートメントにセミコロン(;)がない(関数 Person::Person() )
エラー E2147 person.cpp 30: 引数宣言は 'string' で始められない
エラー E2316 person.cpp 30: 'Person::Person(int,int,int,int,int)' は 'Person' のメンバーではない
エラー E2316 person.cpp 41: 'Person::getname()' は 'Person' のメンバーではない
*** 19 errors in Compile ***
以下、プログラムを載せます。
上から、
①makefile
②person_main.cpp
③person.cpp
④Person.h
としています。
makefile
1 2Person.exe: Person.obj Person_main.obj 3 bcc32 -ePerson.exe Person.obj Person_main.obj 4 5Person.obj: Person.cpp 6 bcc32 -c Person.cpp 7Person_main.obj: Person_main.cpp 8 bcc32 -c Person_main.cpp 9 10Person.obj: Person.h 11Person_main.obj: Person.h 12 13
c++
1 2#include"Person.h" 3#include<iostream> 4#include<string> 5using namespace std; 6 7 8int main(){ 9 cout << "A~Dの評価を出力します\n" << endl; 10 Person person[4]={//4人の評価を関連付け 11 Person("A",5,3,4,3), 12 Person("B",2,5,2,3), 13 Person("C",4,1,5,2), 14 Person("D",2,4,5,1), 15 };//関連付け終了 16 Person = new Person; 17 int i; 18 for(i = 0; i < 4; i++){//出力開始 19 person[i].Show(); 20 }//出力終了 21 22 string nameinput; 23 cout << "A~Dを入力" << flush; 24 getline(cin,nameinput);//getline(cin,変数)で変数の読み込み 25 for(i = 0;i < 4;i++){ 26 if(person[i].getname() == nameinput){ 27 person[i].Show(); 28 } 29 } 30 delete person; //デストラクタ呼び出し 31} 32 33
C++
1 2#include"person.h" 3#include<iostream> 4#include<cstdlib> 5using namespace std; 6#include<string> 7 8 9void Person::Show(){//A~Dの名前と評価の表示 10 cout << "名前:" << name << endl; 11 cout << "第一問:" << q1 << endl; 12 cout << "第二問:" << q2 << endl; 13 cout << "第三問:" << q3 << endl; 14 cout << "第四問:" << q4 << endl; 15 16 cout << ""<< endl; 17}//名前と評価の表示終了 18 19 20 21Person::Person(){ //変数の初期化 22 name = "初期化"; 23 q1 = 0; 24 q2 = 0; 25 q3 = 0; 26 q4 = 0; 27}//変数の初期化終了 28 29 30 31Person::Person(string str, int q1_local, int q2_local, int q3_local, int q4_local){//名前に評価を代入 32 name = str; 33 q1 = q1_local; 34 q2 = q2_local; 35 q3 = q3_local; 36 q4 = q4_local; 37}//代入終了 38 39//デストラクタの実装 40Person::~Person(){} 41 42string Person::getname(){//名前の取得 43 return(name); 44}//名前の取得終了 45 46
//ヘッダーファイルです #ifndef PERSON_H_INCLUDED_ #define PERSON_H_INCLUDED_ #include<string> using namespace std; class Person{ string name; int q1; int q2; int q3; int q4; public: void Show();//名前と評価の表示 //コンストラクタ Person();//名前の設定→初期化 Person(string str, int q1_local, int q2_local, int q3_local, int q4_local);//長さ取得、代入 string getname();//名前の取得(stringのメンバ) ~Person(); }; #endif
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/19 08:58
2017/06/19 09:03
2017/06/19 09:32