创建三角形类

来源:互联网 发布:233是什么意思网络用语 编辑:程序博客网 时间:2024/06/05 20:51
#include<iostream>#include<cmath>using namespace std;class Shape{public:virtual double getArea() const =0;virtual void print() const =0;  virtual ~Shape(){}}; class Circle:public Shape{public:Circle( int = 0, int = 0, double = 0.0 );  virtual double getArea() const;virtual void print() const;private:int x,y;double radius;};class Rectangle:public Shape{public:Rectangle( int = 0, int = 0);virtual double getArea() const;void print() const;protected:int a,b;};double Shape::getArea() const{cout<<"基类的getArea函数,面积是:";   return 0.0;}void Shape::print() const{cout<<"Base class Object"<<endl;}Circle::Circle( int xValue, int yValue, double radiusValue ){x=xValue;  y=yValue;radius= radiusValue ;}double Circle::getArea() const{cout<<"Circle类的getArea函数,面积是:";   return 3.14159 * radius * radius;}void Circle::print() const{cout << "center is ";cout<<"x="<<x<<"   y="<<y;cout << "; radius is " << radius<<endl;}Rectangle::Rectangle( int aValue, int bValue ){a=aValue;  b=bValue;}double Rectangle::getArea() const{cout<<"Rectangle类的getArea函数,面积是:";   return a * b;}void Rectangle::print() const{cout <<"hight is "<<a;cout<<"width is"<<b<<endl;} class Cube:public Rectangle{public:Cube(int x=0, int y=0, int z=0):Rectangle(x,y),c(z){};double getArea() const;void print() const; private:int c;};double Cube::getArea() const{return a*b*c;}void Cube::print() const{cout<<"Cube:h="<<c<<",length="<<a<<",width="<<b<<",Area="<<a*b*c<<endl;}class Triangle : public Shape{protected:double x, y, z;public:Triangle(double a = 0, double b = 0, double c = 0):x(a), y(b), z(c){}double getArea() const;void print() const;};void Triangle::print() const{cout << "Triangle:x = " << x << ",y =" << y << ",z =" << z << endl;}double Triangle::getArea() const{double len = x + y + z;double p = len / 2;double s = sqrt(p*(p - x)*(p - y)*(p - z));cout<<"Triangle类的getArea函数,面积是:";return s;}void creat_object(Shape **ptr);void display_area(Shape *ptr);void display_side(Shape *ptr);void delete_object(Shape *ptr);int main(){Shape *shape_ptr;creat_object(&shape_ptr);display_area(shape_ptr);display_side(shape_ptr);delete_object(shape_ptr);return 0;}void creat_object(Shape **ptr){char type;*ptr = NULL;do{cout<<"创建对象:"<<endl;cout<<"c:Circle类对象; r:Rectangle类对象; u:Cube类对象; t:Triangle类对象"<<endl;cin>>type;switch (type){case 'c':{int xx,yy;double rr;cout<<"请输入圆心的座标和圆的半径:"<<endl;cin>>xx>>yy>>rr;*ptr = new Circle(xx,yy,rr);break;}case 'r':{int aa,bb;cout<<"请输入矩形的长和宽:"<<endl;cin>>aa>>bb;*ptr = new Rectangle(aa,bb);break;}case 'u':{int aa,bb,cc;cout<<"请输入立方体的长、宽、高:"<<endl;cin>>aa>>bb>>cc;*ptr = new Cube(aa,bb,cc);break;}case 't':{double x, y, z;cout << "请输入三角形的三条边:"<<endl;cin >> x >> y >> z;*ptr = new Triangle(x, y, z);break;}default:cout<<"类型错误,请重新选择\n";}}while(*ptr==NULL);} void display_area(Shape *ptr){   cout<<"显示所创建对象的面积,调用的是:"<<endl;cout<<ptr->getArea()<<endl;}void display_side(Shape *ptr){cout<<"显示所创建对象的边:"<<endl;ptr -> print();}void delete_object(Shape *ptr){delete(ptr);}

0 0