継承と仮想関数のしくみを利用し、練習問題8で作成したプログラムを参考にして点数リストを表示するプログラムを作成せよ。ただし、以下の 1) 〜 3) の仕様を満たすこと。
クラス | |
ListItemクラス | コンテナに格納する要素の基本クラス |
char* name : 文字列を指すポインタ | |
void Print() : 文字列を標準出力に表示 | |
Listクラス | ListItemクラスを格納するコンテナ |
void Add(ListItem* p) : pで指定された要素をコンテナに追加 | |
void Sort() : 要素を name に格納されているデータでソート | |
void Print() : 格納した要素のPrintメンバ関数を順に呼び出す | |
StudentEntry クラス | ListItemクラスから派生して作成する、学籍番号と英語の得点、数学の得点を格納するクラス |
int english :英語の得点 int math :数学の得点 |
|
void Print() : 学籍番号と数学と英語の点を標準出力に表示 (基本クラスの関数をオーバーライド) | |
StudentEntry(const char* _studentnum, int _english, int _math) : イニシャライザ付のコンストラクタ _studentnum : 学籍番号を表す文字列 (ListItemクラスのメンバ変数 nameを利用する) int english :英語の得点 int math :数学の得点 引数で与えられた内容で、メンバ変数を初期化すること。 |
//Listクラスのインスタンスの生成 List stlist(100); // エントリーの追加 stlist.Add(new StudentEntry("t102993", 100, 80)); stlist.Add(new StudentEntry("t102992", 90, 60)); stlist.Add(new StudentEntry("t102990", 80, 100)); stlist.Add(new StudentEntry("t102991", 60, 90)); //印刷 stlist.Print(); cout << "===================" << endl; //エントリーのソート stlist.Sort(); //印刷 stlist.Print(); |
実行結果 |
t102993:100:80 t102992:90:60 t102990:80:100 t102991:60:90 =================== t102990:80:100 t102991:60:90 t102992:90:60 t102993:100:80 この後ろに、各自で追加した機能が正常動作することを示す結果も表示すること |
Listクラスを拡張して、あれば良いと思うメンバ関数を追加しなさい。例を以下に示すが、各自が自由な発想で追加してよい。
以下の内容について記載すること
◎ レポートは,レポートテンプレート の章立てに従い作成すること.
◎ 提出先:CoursePower (上級編レポートに提出すること.)
レポートの提出について
レポートは 「レポートの書き方について」をよく読んで各個人で作成し提出すること.
レポートの提出は,電子化された文書ファイルを提出すること.
提出方法の詳細については 「プログラミング演習III ガイダンス資料」を参照すること.
提出期限
レポート提出〆切 … 7/6(金) 8:40
書式不備レポート返却 … 7/9(月) 17:00頃
書式不備修正レポート提出 … 7/17(火) 12:40