圆形、三角形和长方形-继承和派生

描述
圆形、三角形和长方形都可以看做是多边形。定义一个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();
}
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值