矩形类中运算符重载【C++】

Problem F: 矩形类中运算符重载【C++】

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 283   Solved: 161
[ Submit][ Status][ Web Board]

Description

  定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数、输入坐标的函数,实现矩形加法,以及计算并输出矩形面积的函数。要求使用提示中给出的测试函数并不得改动。
  两个矩形相加的规则是:决定矩形的对应坐标分别相加,如
    左下角(1,2),右上角(3,4)的矩形,与
    左下角(2,3),右上角(4,5)的矩形相加,得到的矩形是
    左下角(3,5),右上角(7,9)的矩形。
  这个规则没有几何意义,就这么定义好了。
  输出面积的功能通过重载"<<"运算完成。
  本题可以在2383的基础上扩展完成。

Input

测试函数中第一个矩形直接初始化,第二个矩形通过键盘输入。输入四个数,分别表示第二个矩形左下角和右上角顶点的坐标,如输入2.5 1.8 4.3 2.5,代表左下角坐标为(2.5, 1.8),右上角坐标为(4.3, 2.5)。

Output

输出两点相加后得到的点的面积。运行测试函数时,p1的顶点是1 1 6 3,如果输入的p2是2.5 1.8 4.3 2.5,计算得到的矩形p3的左下角坐标为(3.5, 2.8),右上角坐标为(10.3, 5.5),输出为p3的面积18.36。

Sample Input

2.5 1.8 4.3 2.5

Sample Output

18.36

HINT

int main()

{

    Rectangle p1(1,1,6,3),p2,p3;

    p2.input();

    p3=p1+p2;

    cout<<p3;

    return 0;

}


提交时请加上主函数。

#include <iostream>

using namespace std;

class Rectangle

{

public:

    Rectangle();

    void input();

    Rectangle (double i,double j,double k,double l):a(i),b(j),c(k),d(l){}

    Rectangle operator+(Rectangle &);

    friend ostream& operator<<(ostream&,Rectangle&);

    friend istream& operator>>(istream&,Rectangle&);

private:

    double a,b,c,d;

};

Rectangle::Rectangle(){};

void Rectangle::input()
{
    cin>>a>>b>>c>>d;
}

Rectangle Rectangle::operator + (Rectangle &p)
{
    return Rectangle(a + p.a,b + p.b,c + p.c,d + p.d);
}
ostream& operator << (ostream & output,Rectangle &p)
{
    output<<(p.c-p.a)*(p.d-p.b)<<endl;
    return output;
}
/*
istream& operator >>(istream & input,Rectangle &p)
{
    input>>p.a>>p.b>>p.c>>p.d;
    return input;
}
*/
int main()

{

    Rectangle p1(1,1,6,3),p2,p3;

    p2.input();

    p3=p1+p2;

    cout<<p3;

    return 0;

}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT研究僧大师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值