- 「クラスを用いたBMI値計算プログラム」を作成せよ。
但し、下記の仕様を満たすこと。
- メンバ変数は非公開とし、名前、身長、体重、BMI値、理想の体重の変数を含むこと。この他にもメンバ変数が必要な場合は追加してもよい。
- 名前は無記名にも対応すること(cf. デフォルト引数)。このとき,名前として空白文字さえ与ないオブジェクト (インスタンス) を1つ以上作成し,動作を確認すること。
- メンバ関数には、名前、身長、体重をセットおよびその値を返す関数、BMI値、理想の体重値を計算およびその値を返す関数を含むこと。この他にもメンバ関数が必要な場合は追加してもよい。
- 必須のメンバ関数名は下記の通りとすること。これ以外に追加したメンバ関数の名前は任意とする。
- SetName
- Name (名前を返す)
- SetHeight
- GetHeight
- SetWeight
- GetWeight
- CalcBMI (BMIを計算する)
- BMI (BMIを返す)
- CalcIdeal (理想体重を計算する)
- Ideal (理想体重を返す)
- コンストラクタ、デストラクタを使用すること。
- 実行結果として、表1を参考に、名前、身長、体重、BMI値、肥満の判定、理想値での体重、何キロやせると(または太ると)理想値となるか、を表示すること。
- ヒント:実行結果を表示するための関数(またはメンバ関数)を用意するとよい。
- クラスのオブジェクト(インスタンス)を複数個作成し、結果を表示すること。
- クラスの定義は、ヘッダファイルに記述すること(勿論、クラスの実現部は別ファイルにする)。
BMI値
BMI値は、(体重 kg)/(身長 m×身長 m)によって計算される値である。
この値によって以下のような判定となる。
表1 : BMIと肥満の判定
判定 やせ 普通 肥満肥満度1 肥満度2 肥満度3 肥満度4 BMI値 18.5未満 18.5以上25未満 25以上30未満 30以上35未満 35以上40未満 40以上 BMIの理想値は22で、この値のとき最も病気になりにくいとされています。
- 「クラスを用いた円の面積計算プログラム」を作成せよ。
但し、下記の仕様を満たすこと。
- 任意の2点 A(ax,ay), B(bx,by) の中点Pのx座標,y座標の値 (px, py) を求め,中点Pを中心とし,任意の2点A, Bを通過する円の半径r,面積,円周の長さをそれぞれ求める。
このとき,px = (ax+bx) / 2, py = (ay+by) / 2によって求められる。また,半径rは点AP間の距離,もしくは点PB間の距離と等しい。
- ヒント:円周率 π は math.h をインクルードし,数学定数 M_PI を使用すること
- メンバ変数は非公開とし、点A,B のx座標,y座標,中点Pのx座標,y座標,円の半径r,円の面積,円周の長さの変数を含むこと。この他にもメンバ変数が必要な場合は追加してもよい。
- 点A, Bのx, y座標のいずれかの入力がなかった場合にも対応すること。
- メンバ関数には、点A, Bの座標をセットおよびその値を返す関数、中点Pの座標,円の半径r,円の面積,円周の長さを計算および返す関数を含むこと。この他にもメンバ関数が必要な場合は適宜追加してもよい。
- 必須のメンバ関数名は下記の通りとすること。これ以外に追加したメンバ関数の名前は任意とする。
- SetAx
- SetAy
- GetAx
- GetAy
- SetBx
- SetBy
- GetBx
- GetBy
※SetAxとSetAy, SetBxとSetByは1つの関数にまとめても良い (GetAx等も同様)- CalcPx
- CalcPy
- GetPx
- GetPy
- CalcRadius (半径を計算する)
- Radius (半径を返す)
- CalcArea (面積を計算する)
- Area (面積を返す)
- CalcCircumference (円周を計算する)
- Circumference (円周を返す)
- コンストラクタを使用すること。
- 実行結果として,入力された点A, Bのx座標,y座標の値と, 求められた中点Pのx座標,y座標の値,中点Pを中心とする円の半径rおよび面積と円周の長さを表示すること。
- 点A, 点Bのx, y座標の値はどちらも正,どちらかが正でもう一方は負,どちらも負などいくつかのパターンがある (下図参照)
![]()
![]()
![]()
- クラスのオブジェクト(インスタンス)を複数個作成し、結果を表示すること。
- クラスの定義は、ヘッダファイルに記述すること(勿論、クラスの実現部は別ファイルにする)。
オブジェクト指向プログラミングについて調べ、どのような概念かを 1000字以上で述べよ。
キーワード:手続き型言語,クラス,情報隠蔽,カプセル化,オブジェクト (もしくはインスタンス)
ただし、以下の5つのキーワードを含み、本文中で1つ以上の参考文献を参照すること。
※Webからのコピペ禁止!コピペが発覚次第,課題1のレポートは不可とします。
int型の整数のみを扱うスタックを実現するクラスを作成せよ。ただし、下記の条件を満足すること。
- スタックのサイズはユーザが指定することができるようにする(コンストラクタを使う)。また、サイズの指定がなかった場合は、自動的にサイズを10(デフォルト値)とすること。スタック領域の確保はnew演算子を用いて動的に確保すること。
- メンバ変数には、最大要素数、スタックの先頭要素の索引、値を格納するスタック、の3つのを用いること。
- メンバ関数には、コンストラクタ(2つあってもよい)、デストラクタ、プッシュ void Push(int value)、ポップ int Pop(void) を用いること。
- スタックのオーバフロー、アンダーフローがあった場合についても考慮すること。
- クラスの定義はヘッダで行い、メンバ関数の実体は、別のファイルに記述すること。
さらにクラスの利用した例のファイルも作成すること。- クラスの利用例には、スタックのオーバフロー、アンダーフローがある場合と、ない場合の両方の例を示すこと。