継承と仮想関数のしくみを利用し、練習問題8で作成したプログラムを参考にして身長体重リストを表示するプログラムを作成せよ。ただし、以下の 1) 〜 3) の仕様を満たすこと。
| クラス | |
| ListItemクラス | コンテナに格納する要素の基本クラス |
| char* name : 文字列を指すポインタ | |
| void Print() : 文字列を標準出力に表示 | |
| Listクラス | ListItemクラスを格納するコンテナ |
| void Add(ListItem* p) : pで指定された要素をコンテナに追加 | |
| void Sort() : 要素を name に格納されているデータでソート | |
| void Print() : 格納した要素のPrintメンバ関数を順に呼び出す | |
| HealthRecord クラス | ListItemクラスから派生して作成する、年月日と身長、体重を格納するクラス |
|
double height :身長(cm) double weight :体重(kg) |
|
| void Print() : 年月日と身長、体重を標準出力に表示 (基本クラスの関数をオーバーライド) | |
| HealthRecord(const char* _date, double height, double weight) : イニシャライザ付のコンストラクタ _date : 年月日を表す文字列 (ListItemクラスのメンバ変数 nameを利用する) double height :身長(cm) double weight :体重(kg) 引数で与えられた内容で、メンバ変数を初期化すること。 |
//Listクラスのインスタンスの生成
List healthlist(100);
// エントリーの追加
healthlist.Add(new HealthRecord("2014-06-21", 156.2, 55.1));
healthlist.Add(new HealthRecord("2014-06-22", 156.1, 52.2));
healthlist.Add(new HealthRecord("2014-06-20", 156.1, 52.2));
healthlist.Add(new HealthRecord("2014-06-23", 156.3, 53.3));
//印刷
healthlist.Print();
cout << "-----------------" << endl;
//エントリーのソート
healthlist.Sort();
//印刷
healthlist.Print();
|
実行結果 |
|
2014-06-21:156.2(cm):55.1(kg) 2014-06-22:156.1(cm):52.2(kg) 2014-06-20:156.1(cm):52.2(kg) 2014-06-23:156.3(cm):53.3(kg) ----------------- 2014-06-20:156.1(cm):52.2(kg) 2014-06-21:156.2(cm):55.1(kg) 2014-06-22:156.1(cm):52.2(kg) 2014-06-23:156.3(cm):53.3(kg) この後ろに、各自で追加した機能が正常動作することを示す結果も表示すること |
Listクラスを拡張して、あれば良いと思うメンバ関数を追加しなさい。例を以下に示すが、各自が自由な発想で追加してよい。

以下の内容について記載すること
◎ レポートは,レポートテンプレート の章立てに従い作成すること.
◎ 提出先:CoursePower (上級編レポートに提出すること.)
レポートの提出について
レポートは 「レポートの書き方について」をよく読んで各個人で作成し提出すること.
レポートの提出は,電子化された文書ファイルを提出すること.
提出方法の詳細については 「プログラミング演習III ガイダンス資料」を参照すること.
提出期限
レポート提出〆切 … 7/4(金) 8:40
書式不備レポート返却 … 7/7(月) 17:00頃
書式不備修正レポート提出 … 7/14(月) 12:40