//语言:C++,编译环境:Microsoft Visual C++ 6.0或Microsoft Visual Studio 2005
#include <iostream>
#include <string>
using namespace std;
class shape
{
public:
virtual double area()=0;//求图形面积
virtual void printshapename()=0;//输出图形的名称
};
//****************************************************************************
class shapes:public shape
{
public:
void IsShape();//判断图形
double area();
void printshapename();
private:
string name;
double r,a,b,h;
};
//****************************************************************************
int main()
{
shapes s;
s.printshapename();
s.IsShape();
cout<<面积是:<<s.area()<<endl;
return 0;
}
//****************************************************************************
void shapes::printshapename()//输出图形的名称
{
string n;
cout<<请输入图形的名称:<<endl;
cin>>n;
name=n;
}
//****************************************************************************
void shapes::IsShape()//判断图形
{
if(name==圆形)
{
cout<<请输入半径:<<endl;
cin>>r;
}
else if(name==三角形)
{
cout<<请输入底和高:<<endl;
cin>>a>>h;
}
else if(name==矩形)
{
cout<<请输入长和宽:<<endl;
cin>>a>>b;
}
else if(name==梯形)
{
cout<<请输入上底边长、下底边长和高<<endl;
cin>>a>>b>>h;
}
else if(name==正方形)
{
cout<<请输入边长:<<endl;
cin>>a;
}
else cout<<您的输入有误!!<<endl;
}
//****************************************************************************
double shapes::area()//求图形面积
{
if(name==圆形) return r*r*3.14159;
else if(name==三角形) return a*h/2;
else if(name==矩形) return a*b;
else if(name==梯形) return (a+b)*h/2;
else if(name==正方形) return a*a;
else return 0.0;
}