编写一个形状类Shape,并编写Shape的派生类:圆类Circle、三角形类Triangle,矩形类Retangle,并重定义基类的成员函数,使之返回正确的结果。然后编写主程序对他们进行测试。
#include<iostream>
#include<math.h>
using namespace std;
class Shape
{
protected:
double x, y,z;
public:
void get()
{
cout << "请输入边长:" << endl;
cin >> x >> y >> z;
}
virtual void show() = 0;
};
class Triangle : public Shape
{
public:
double area()
{
double p = x + y + z;
double s = sqrt(p * (p - x) * (p - y) * (p - z));
return s;
}
double girth()
{
return (x+y+z);
}
void show()
{
double p = x + y + z;
cout << "三角形的边长: " << x <<"\t"<<y <<"\t"<< z <<"\n"
<<" 周长:"<<girth()<<"\n"
<< " 面积: " <<area()<< endl;
}
};
class Retangle : public Shape
{
public:
double area()
{
return (x * y);
}
double girth()
{
return (2 * (x + y));
}
void show()
{
cout << "矩形的长:" << x << "\n"
<< "宽:" << y << "\n"
<< "周长:" << girth() << "\n"
<< "面积:" << area()<< endl;
}
};
class Circle : public Shape
{
public:
double area()
{
return (3.14 * x * x);
}
double girth()
{
return (2 * 3.14 * x);
}
void show()
{
cout<< "圆的半径: " << x << "\n"
<< " 周长: " << girth() << "\n"
<< " 面积:" << area() << endl;
}
};
int main()
{
Shape* p;
Triangle t;
Retangle s;
Circle c;
p = &t;
p->get();
t.area();
t.girth();
p->show();
p = &s;
p->get();
s.area();
s.girth();
p->show();
p = &c;
p->get();
c.area();
c.girth();
p->show();
return 0;
}