課題3 レポートについて


レポート課題

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

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     :数学の得点

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

 

2) 以下の使用例のような出力をすること 。

    //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


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

 

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

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

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

 

注意事項

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

ヒント

レポートについて

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

1. 課題の概要

2.データ構造

3.プログラム

4.実行結果

5. オプション課題

6.考察

7. 感想

8.参考文献

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

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

◎ 提出先:CoursePower (上級編レポートに提出すること.)

レポートの提出について

提出期限