13周實驗報告(任務4)

任務描述:

/*【任務】設計一個抽象類CSolid,含有兩個求表面積及體積的純虛函數。設計個派生類CCube、CBall、CCylinder,
分別表示正方體、球體及圓柱體。在main()函數中,定義基類的指針p(CSolid *p;),利用p指針,輸出正方體、球體
及圓柱體對象的表面積及體積。*/


源程序及其運行結果:

#include<iostream>

#define pi 3.14

using namespace std;

class CSolid
{
public:
	virtual double Area()  = 0;

	virtual double Volume()  = 0;
};
class CCube:public CSolid
{
private:
	double side;
public:
	CCube(double s):side(s){};

	double Area();

	double Volume();
};
double CCube::Area() 
{
	return(6*side*side);
}
double CCube::Volume()
{
	return (side *side *side);
}
class CBall:public CSolid
{
private:
	double Ball_R;
public:
	CBall(double br):Ball_R(br){};

	double Area();

	double Volume();
};
double CBall::Area()
{
	return(4 * pi * Ball_R * Ball_R);
}
double CBall::Volume()
{
	return((4 * pi * Ball_R * Ball_R * Ball_R)/ 3);
}
class CCylinder:public CSolid
{
private:
	double high;

	double radius;
public:
	CCylinder(double r,double h):radius(r),high(h){};

	double Area();

	double Volume();
};
double CCylinder::Area()
{
	return((2* pi* radius* radius)+(2* pi * radius *high));
}
double CCylinder::Volume()
{
	return(pi* radius *radius *high);
}

int main()
{
	CSolid *p; 

    double s,v;  

    CCube x(30); 

    cout<<"立方體邊長爲"<<endl;  

    p=&x;  

    s=p->Area( );

    v=p->Volume( );  

    cout<<"表面積:"<<s<<endl;  

    cout<<"體積:"<<v<<endl;  

    cout<<endl;  

    CBall y(4.5);  

    cout<<"球體半徑爲.5"<<endl;  

    p=&y;  

    s=p->Area( );  

    v=p->Volume( );  

    cout<<"表面積:"<<s<<endl;  

    cout<<"體積:"<<v<<endl;  

    cout<<endl;  

    CCylinder z(10,20);  

    cout<<"圓柱體底面半徑、高分別爲, 20"<<endl; 

    p=&z;  

    s=p->Area( );  

    v=p->Volume( );  

    cout<<"表面積:"<<s<<endl;  

    cout<<"體積:"<<v<<endl;  

    cout<<endl; 

	system("pause");

	return 0;
}

運行結果:

立方體邊長爲30
表面積:5400
體積:27000

球體半徑爲4.5
表面積:254.34
體積:381.51

圓柱體底面半徑、高分別爲10, 20
表面積:1884
體積:6280

請按任意鍵繼續. . .


 

知識積累:

1.熟悉抽象類的使用和過程中的關鍵點

2.在main函數中通過使用指針,調用不同的成員函數,熟悉基類和派生類的關係。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章