形状类

发布时间 2023-04-21 23:17:34作者: 平安喜乐×

定义shape类,无数据成员,包含两个纯虚函数成员void setvalues() 和float area() ,由shape类进行派生如下:

矩形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

三角形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

正方形类,包含一个数据成员变量用于描述边长,float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

圆形类,包含一个数据成员变量用于描述半径,float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

在主函数中定义相应的指针对象和普通对象,利用虚函数实现多态,依次分别输入矩形的底和高,三角形的底和高,正方形的边长,圆形的半径,若其中任何一个值小于等于0,则输出Set Value Error!,然后退出程序,对于之前已正确输入的数值计算相应形状的面积。

【输入形式】

矩形的底和高

三角形的底和高

正方形的边长

圆形的半径

【输出形式】

矩形面积

三角形面积

正方形面积

圆形面积


代码如下:



#include<iostream> #include<string> using namespace std; class shape { public: virtual void setvalues(float a=0,float b=0)=0; virtual float area()=0; }; class rectangle:public shape { private: float di,high; public: void setvalues(float a,float b) { di=a; high=b; } float area() { return di*high; } }; class rectriangle:public shape { private: float di,high; public: void setvalues(float a,float b) { di=a; high=b; } float area() { return (di*high)/2; } }; class square:public shape { private: float bian; public: void setvalues(float a,float b) { bian=a; } float area() { return bian*bian; } }; class round:public shape { private: float r; public: void setvalues(float a,float b=0) { r=a; } float area() { return 3.1415*r; } }; int main() { float di,high; float d,h; float a; float r; cin>>di>>high>>d>>h>>a>>r; shape *p; rectangle j; rectriangle s; square z; round y; p=&j; if(di<0||high<0) { cout<<"Set Value Error!"<<endl; exit(0); } p->setvalues(di,high); cout<<p->area()<<endl; p=&s; if(d<0||h<0) { cout<<"Set Value Error!"<<endl; exit(0); } p->setvalues(d,h); cout<<p->area()<<endl; p=&z; if(a<0) { cout<<"Set Value Error!"<<endl; exit(0); } p->setvalues(a); cout<<p->area()<<endl; p=&y; if(r<0) { cout<<"Set Value Error!"<<endl; exit(0); } p->setvalues(r); cout<<p->area()<<endl; return 0; }