課題3 レポートについて


レポート課題

継承と仮想関数のしくみを利用し、練習問題8で作成したプログラムを参考にして気象リストを表示するプログラムを作成せよ。ただし、以下の 1) ~ 3) の仕様を満たすこと。

1) 以下の3つのクラスを作成する。それぞれ、表に示したメンバ変数・メンバ関数を持たせること。(追加は自由)

クラス  
ListItemクラス コンテナに格納する要素の基本クラス
char* name : 文字列を指すポインタ
void Print()  : 文字列を標準出力に表示
Listクラス ListItemクラスを格納するコンテナ
void Add(ListItem* p) : pで指定された要素をコンテナに追加
void Sort()  : 要素を name に格納されているデータでソート
void Print() : 格納した要素のPrintメンバ関数を順に呼び出す
WeatherRecord クラス ListItemクラスから派生して作成する、年月日と天気、最高気温、最低気温、湿度を格納するクラス
char* weather :天気を格納した文字列を指すポインタ
int high :最高気温(℃)
int low :最低気温(℃)
int pop :湿度(%)
void Print() : 年月日と天気、最高気温、最低気温、湿度を標準出力に表示 (基本クラスの関数をオーバーライド)
WeatherRecord(const char* _date, const char* _weather, int _high, int _low, int _pop) : イニシャライザ付のコンストラクタ
 _date : 年月日を表す文字列 (ListItemクラスのメンバ変数 nameを利用する)
 _weather :天気を表す文字列
 _high :最高気温(℃)
 _low :最低気温(℃)
 _pop :湿度(%)

引数で与えられた内容で、メンバ変数を初期化すること。

 

2) main関数に以下の例のようなテスト用コードを記述し、右図のような出力をすること 。

    //Listクラスのインスタンスの生成
    List weatherlist(100);
    
    // エントリーの追加
    weatherlist.Add(new WeatherRecord("2023-12-17", "sunny", 12, 2, 20));
    weatherlist.Add(new WeatherRecord("2023-12-15", "rain", 10, 6, 70));
    weatherlist.Add(new WeatherRecord("2023-12-18", "sunny", 10, -3, 0));
    weatherlist.Add(new WeatherRecord("2023-12-16", "cloudy", 16, 8, 30));

    //印刷
    weatherlist.Print();
    cout << "-----------------" << endl;
	
    //エントリーのソート
    weatherlist.Sort();
    //印刷
    weatherlist.Print();
	
実行結果
2023-12-17: sunny: 12/2(℃), 20(%)
2023-12-15: rain: 10/6(℃), 70(%)
2023-12-18: sunny: 10/-3(℃), 0(%)
2023-12-16: cloudy: 16/8(℃), 30(%)
-----------------
2023-12-15: rain: 10/6(℃), 70(%)
2023-12-16: cloudy: 16/8(℃), 30(%)
2023-12-17: sunny: 12/2(℃), 20(%)
2023-12-18: sunny: 10/-3(℃), 0(%)
<

この後ろに、各自で追加した機能が正常動作することを示す結果も表示すること

 

3)Listクラスには、独自のメンバ関数を最低限一つ追加すること。

Listクラスを拡張して、あれば良いと思うメンバ関数を追加しなさい。例を以下に示すが、各自が自由な発想で追加してよい。

4) (オプション課題) ListItemクラス、Listクラスを使用し、継承によりこれらのクラスの機能を利用してオリジナルのプログラムを作成せよ。

 

注意事項

  1. 各クラスに必要なコンストラクタ・デストラクタ・メンバ関数・メンバ変数は自由に追加して良い。適切な設計、適切なアクセス指定となるように考慮すること。
  2. Listクラス内のデータ構造は指定しないので、配列・リンクトリストなど、各自が自由に工夫して実装すること。
  3. ファイルは適切に分割し、2重インクルード防止などの措置を施すこと。
  4. メモリリークを起こしてはならない。

ヒント

レポートについて

以下の内容について記載すること

1. 課題の概要

2.データ構造

3.プログラム

4.実行結果

5. オプション課題

6.考察

7.実行環境

8. 感想

9.参考文献

テンプレートおよび提出期限

◎ レポートは,レポートテンプレート の章立てに従い作成すること.

◎ 提出先:Webclass (課題3レポートに提出すること.)

レポートの提出について

提出期限