描述
圆形、三角形和长方形都可以看做是多边形。定义一个shape(包含两个整型数据成员,代表图形的中心)。在此基础上,派生出圆形类,三角形类,长方形类。要求:
每个类都需要定义构造函数
定义一组set 、get函数,完成对数据成员的操作
重载>>,<<< span="">运算符函数,完成输入、输出操作
在圆形类,三角形类,长方形类中定义perimeter函数,计算图形的周长
输入
圆的半径
三角形的三条边的长度
长方形的长和宽
输出
圆的周长
三角形的周长
长方形的周长
说明:结果保留两位小数
样例输入
1
1 1 1.41
1 1
样例输出
6.28
3.41
4.00
#include<iostream>
#include<iomanip>
#define PI 3.141
using namespace std;
class shape
{
private:
int x,y;
public:
shape(int xx=0,int yy=0)
{
x=xx;y=yy;
}
};
class circle:protected shape
{
protected:
int r;
double c;
public:
circle(int rr=0)
{
r=rr;
}
double perimeter()
{
c=2*r*PI;
return c;
}
void set(int rr)
{
r=rr;
}
void get()
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<c<<endl;
}
friend ostream&operator<<(ostream&output,const circle&);
friend istream&operator>>(istream&input,circle&);
};
ostream&operator<<(ostream&output,const circle&C)
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<C.c<<endl;
return output;
}
istream&operator>>(istream&input,circle&C)
{
cin>>C.r;
return input;
}
class triangle:protected shape
{
protected:
double a,b,c;
double p;
public:
triangle(double aa=0,double bb=0,double cc=0)
{
a=aa;b=bb;c=cc;
}
double perimeter()
{
p=a+b+c;
return p;
}
void set(double aa,double bb,double cc)
{
a=aa;b=bb;c=cc;
}
void get()
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<p<<endl;
}
friend ostream&operator<<(ostream&output,const triangle&);
friend istream&operator>>(istream&input,triangle&);
};
ostream&operator<<(ostream&output,const triangle&T)
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<T.p<<endl;
return output;
}
istream&operator>>(istream&input,triangle&T)
{
cin>>T.a>>T.b>>T.c;
return input;
}
class rectangle:protected shape
{
protected:
double a,b;
double p;
public:
rectangle(double aa=0,double bb=0)
{
a=aa;b=bb;
}
double perimeter()
{
p=(a+b)*2;
return p;
}
void set(double aa=0,double bb=0)
{
a=aa;b=bb;
}
void get()
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<p<<endl;
}
friend ostream&operator<<(ostream&output,const rectangle&);
friend istream&operator>>(istream&input,rectangle&);
};
ostream&operator<<(ostream&output,const rectangle&R)
{
cout<<setiosflags(ios::fixed)<<setprecision(2)<<R.p<<endl;
return output;
}
istream&operator>>(istream&input,rectangle&R)
{
cin>>R.a>>R.b;
return input;
}
int main()
{
double r,a1,b1,c1,a2,b2;
cin>>r>>a1>>b1>>c1>>a2>>b2;
circle C(r);
triangle T(a1,b1,c1);
rectangle R(a2,b2);
C.perimeter();
T.perimeter();
R.perimeter();
C.get();
T.get();
R.get();
}