YTUOJ-矩形类中运算符重载

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(double a=0,double b=0,double c=0,double d=0);
    void input();
    friend Rectangle operator+(Rectangle &,Rectangle &);
    friend ostream &operator<<(ostream &output,Rectangle &s);
private:
    double x1;
    double y1;
    double x2;
    double y2;
};

Rectangle::Rectangle(double a,double b,double c,double d)
{
    x1=a;
    y1=b;
    x2=c;
    y2=d;
}

void Rectangle::input()
{
    cin>>x1>>y1>>x2>>y2;
}

Rectangle operator+(Rectangle &s1,Rectangle &s2)
{
    Rectangle s;
    s.x1=s1.x1+s2.x1;
    s.y1=s1.y1+s2.y1;
    s.x2=s1.x2+s2.x2;
    s.y2=s1.y2+s2.y2;
    return s;
}

ostream & operator<<(ostream &output,Rectangle &s)
{
    double S;
    S=(s.x2-s.x1)*(s.y2-s.y1);
    output<<S<<endl;
    return output;
}
int main()
{
    Rectangle s1(1,1,6,3),s2,s3;
    s2.input();
    s3=s1+s2;
    cout<<s3;
}

运行结果:

学习心得:

这一题的内容是这一周需要学习的内容,还没有去看视频,但在书的帮助下还是做了出来。

心好累,还是格式错误了一次,,,题目提供了主函数,结果还要求加上主函数,,,但是一直以来大量的不需要提交题目给的函数的题目养成了这种惯性。。。所以。。。唉。得把题仔细读完啊。。。

时间: 2024-12-13 21:25:56

YTUOJ-矩形类中运算符重载的相关文章

第十五周oj刷题—— Problem C: 矩形类中运算符重载【C++】

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

字符串类中运算符重载出现的一个问题

上机辅导.学生的一个程序莫名出问题.她是在做一个String类,主要是要实现字符串的连接. 程序是这样的,请读者将其拷到IDE,边看边调: #include <iostream> #include <cassert> #include <cstring> using namespace std; class String { private: char* p; int len; public: String(); String(const char* s); Strin

C#中运算符重载

很多语言都允许程序员使用运算符重载,尽管从编程的角度看,这没有其必要性,但是对于代码来讲可以提高它的可读性,带来许多方便之处.最简单的例子就是,我们用String类的时候,用"+"运算符直接实现字符串的连接,很方便很直观. 运算符重载实例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; namespace impli

sdut 4-1 复数类的运算符重载

4-1 复数类的运算符重载 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握成员运算符重载及友元运算符重载 要求定义一个复数类,重载加法和减法运算符以适应对复数运算的要求,重载插入运算符(<<)以方便输出一个复数的要求. 输入 要求在主函数中创建对象时初始化对象的值. 输出 输出数据共有4行,分别代表a,b的值和它们求和.求差后的值 示例输入 无 示例输出 a=3.2+4.5i b=8.9+5.6i a+b=12.1+10.1i

第十七周oj刷题——Problem O: B C++时间类的运算符重载

Description C++时间类的运算符重载 定义一个时间类Time,其数据成员为表示时间的小时(hour).分(minute),秒(second). 重载运算符"+",使之能用于时间对象的加法运算:重载运算符"<<",使之能用于时间对象的输出操作. (1)参加运算的两个操作数可以都是时间类对象,也可以其中有一个是整数(表示秒),顺序任意. 例如,t1+t2,i+t1,t1+i均合法(设i为整数表示秒数, t1,t2为时间类Time对象). (2)输

4-1复数类的运算符重载(SDUTOJ2677)

http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2677&cid=1275 题目描述 通过本题目的练习可以掌握成员运算符重载及友元运算符重载 要求定义一个复数类,重载加法和减法运算符以适应对复数运算的要求,重载插入运算符(<<)以方便输出一个复数的要求. 输入 要求在主函数中创建对象时初始化对象的值. 输出 输出数据共有4行,分别代表a,b的值和它们求和.求差后的值 示例输入 无 示例输出 a=3.2+4.5i b=8.9+5.6i

[c++]String字符串类的运算符重载

在c++中有一个新定义的类型string,可以不用那么麻烦的操作字符串,并且一些高级的运算符重载让她的使用更加便捷 下面是String类的定义和成员函数的定义: #ifndef operator_operator_h #define operator_operator_h #include<iostream> #include<string.h> using namespace std; class String { friend ostream& operator<

模板类与运算符重载

我自定义了一个模板类并重载了运算符,预定义实现功能为能实现对数组一般操作,类似于vector. #ifndef ARRAY_H #define ARRAY_H #include <iostream> using namespace std; template<class T> class Array{ friend ostream& operator<<(ostream&, const Array &); friend istream&

优先队列中运算符重载

1 struct node{ 2 int a; 3 int cost; 4 node(int a, int cost):a(a), cost(cost){} 5 friend bool operator < (node n1, node n2){ 6 return n1.cost > n2.cost; 7 } 8 }; 9 priority_queue<node> q; 原文地址:https://www.cnblogs.com/rstz/p/12359948.html