C++5週目の項目1-三角形のデザイン

3502 ワード

レッスンの最初のアドレス:http://blog.csdn.net/sxhelijian/article/details/7910565を選択します。今週のテーマリンク:http://blog.csdn.net/sxhelijian/article/details/8723847
【プロジェクト1】三角形クラスを設計し、コンストラクタを増加することにより、オブジェクトを定義時に初期化することができます。
#include<iostream>
using namespace std;
class Triangle
{public:
	double perimeter(void);//        
	double area(void);//           
	void showMessage();
private:
	double a,b,c; //         
};


void Triangle:: showMessage()
{
	cout<<”          :”<<a<<'\t'<<<<b<<<<'\t'<<<<c<<endl;
	cout<<"        :"<< perimeter()<<'\t'<<"   :"<< area()<<endl<<endl;
}


void main(void)
{
	Triangle Tri1;	//           (  ),            ,      1
	Tri1.showMessage();
	Triangle Tri2(7,8,9);	//           (  )
	Tri2.showMessage();
}
特に要求されている:構造関数の各種の書き方を全面的に理解するために、本任務は複数のバージョンのプログラムを提出することを要求しており、下記の知識点(パラメータ構造関数、デフォルトの構造関数、標準パラメータの構造関数、パラメータ初期化表を持っています。これらの概念を先に本を読んで理解しました。)を表しています。
(1)パラメータ構造関数、すなわちTriangle(double x,double y,double z)を使用して、三辺長は呼び出し時に直接に参加して与えます。
(2)デフォルトのコンストラクタを設計します。つまりパラメータを指定しない場合、デフォルトの各辺の長さは1です。
(3)デフォルトのパラメータがあるコンストラクタを使用して、パラメータを指定しない場合、デフォルトの辺の長さは1です。
(4)構造関数でパラメータ初期化テーブルを使用してデータメンバーを初期化する。
解答1: 要求を体現する1と2
#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
	Triangle(){a=1;b=1;c=1;} //(2)        ,       ,      1;
	Triangle(double x, double y, double z)	{a=x; b=y; c=z;} //(1)         , Triangle(double x, double y, double z),              

	double perimeter(void);//        
	double area(void);//           
	void showMessage();
private:
	double a,b,c; //         
};

double Triangle::perimeter(void)  
{  
    return (a + b + c);  
}  
  
double Triangle::area(void)  
{  
    double s = (a + b + c) / 2;    
    return sqrt(s * (s - a) * (s - b) * (s - c));   
} 

void Triangle::showMessage()
{
	cout<<"          :"<<a<<' '<<b<<' '<<c<<endl;
	cout<<"        :"<<perimeter()<<' '<<"   :"<<area()<<endl<<endl;
}

void main(void)
{
	Triangle Tri1;	//           (  )
	Tri1.showMessage();
	Triangle Tri2(7,8,9);	//           (  )
	Tri2.showMessage();
	system("pause");
}
要求を体現しています。(3)デフォルトのパラメータの構造関数を使って、実際の参加を与えない場合、デフォルトの辺の長さは1です。また,構造関数をクラスの体外に定義した。注意:すべてのパラメータがデフォルトの値を与えているので、デフォルトのコンストラクタは再構築できません。
class Triangle
{
public:
	Triangle(double x=1, double y=1, double z=1);//(3)             ,      ,     1;
	double perimeter(void);//        
	double area(void);//           
	void showMessage();
private:
	double a,b,c; //         
};

Triangle::Triangle(double x, double y, double z)	
{
	a=x; 
	b=y; 
	c=z;
}
要求を体現しています。(4)コンストラクションでパラメータ初期化テーブルを使ってデータメンバーを初期化します。書き方を変えるだけですが、これは一種の提唱の書き方です。
class Triangle
{
public:
	Triangle(double x=1, double y=1, double z=1) :a(x),b(y),c(z){} //(4)        
	double perimeter(void);//        
	double area(void);//           
	void showMessage();
private:
	double a,b,c; //         
};
または、クラス外で定義する場合:
Triangle::Triangle(double x, double y, double z):a(x),b(y),c(z){}	//(4)                      。
【プロジェクト1開拓(選択)】長方形類を自分で設計してください。矩形の面積、周囲、対角線を計算して、正方形かどうかを判断します。似たようなコンストラクタを使って、自分でメーン関数を設計して、デザインの種類をテストしてください。