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

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

/* All rights reserved.
 * 文件名称:test.cpp
 * 作者:陈丹妮
 * 完成日期:2015年 6 月 21 日
 * 版 本 号:v1.0
 */
#include <iostream>
#include <cmath>
using namespace std;
class Rectangle
{
private:
    double x1;
    double y1;
    double x2;
    double y2;
public:
    Rectangle(double a1,double b1,double a2,double b2):x1(a1),y1(b1),x2(a2),y2(b2) {}
    Rectangle(){}
    Rectangle operator +(Rectangle &p1);
    friend ostream & operator<<(ostream&,Rectangle &p);
    void input();
};
Rectangle Rectangle::operator +(Rectangle &p1)
{
    Rectangle p;
    p.x1=x1+p1.x1;
    p.y1=y1+p1.y1;
    p.x2=x2+p1.x2;
    p.y2=y2+p1.y2;
    return p;
}
ostream & operator<<(ostream&output,Rectangle &p)
{
    double s;
    s=abs(p.x2-p.x1)*abs(p.y2-p.y1);
    output<<s;
    return output;
}
void Rectangle::input()
{
    cin>>x1>>y1>>x2>>y2;
}
int main()
{
    Rectangle p1(1,1,6,3),p2,p3;
    p2.input();
    p3=p1+p2;
    cout<<p3;
    return 0;
}

学习心得:没有什么能使你停下脚步,除了自己。

现在的刷题,自己找到了感觉,好棒好棒,就是这样,不断的在做题的过程中,发现错误,改正错误,自己才能变得更加强大!!

时间: 2024-10-15 15:36:43

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

第十五周oj刷题——Problem B: 矩形类定义【C++】

Description 定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数.输入坐标的函数,以及计算并输出矩形面积的函数.要求使用提示中给出的测试函数并不得改动. Input 四个数,分别表示矩形左下角和右上角顶点的坐标,如输入3.7 0.4 6.5 4.9,代表左下角坐标为(3.7, 0.4),右上角坐标为(6.5, 4.9). Output 输出一共有3行(请参考提示(hint)中的main函数): 第一行:由输入的坐标确定的矩形对象p1的面积 第二行:由对象复

第十五周oj刷题——Problem M: C++习题 矩阵求和--重载运算符

Description 有两个矩阵a和b,均为2行3列.求两个矩阵之和.重载运算符"+",使之能用于矩阵相加(如c=a+b). 重载流插入运算符"<<"和流提取运算符">>".使之能用于该矩阵的输入和输出. Input 两个2行3列矩阵 Output 矩阵之和 Sample Input 1 2 3 4 5 6 7 8 9 1 2 3 Sample Output 8 10 12 5 7 9 /* All rights res

第十五周oj刷题——Problem I: C++ 习题 比较大小-类模板

Description 声明一个类模板,利用它分别实现两个整数.浮点数和字符的比较,求出大数和小数.说明:在类模板外定义各成员函数. Input 输入两个整数.两个浮点数和两个字符 Output 从大到小输出两个整数.两个浮点数和两个字符 Sample Input 3 7 45.78 93.6 a A Sample Output 7 3 93.60 45.78 a A   /* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年

第十五周oj刷题——Problem E: C++习题 对象数组求最大值

Description 建立一个对象数组,内放n(<10)个学生的数据(学号.成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出n个学生中成绩最高者,并输出其学号. Input n和n个学生的学号.成绩 Output 成绩最高者的学号和成绩 Sample Input 5 101 78.5 102 85.5 103 98.5 104 100.0 105 95.5 Sample Output 104 100.00 /* All rights reserved. * 文件名称:

第十五周oj刷题——Problem F: C++习题 商品销售

Description 商店销售某一商品,每天公布统一的折扣(discount).同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠.现已知当天m个销货员销售情况为 销货员号(num)            销货件数(quantity)       销货单价(price) 101                                              5                            23.5 10

第十五周oj刷题——Problem N: C++习题 复数类--重载运算符3+

Description 请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值.定义Complex(复数)类,在成员函数中包含重载类型转换运算符: operator double() { return real; } Input 一个复数与一个double数 Output d1的值和复数形式的此值 Sample Input 3 4 2.5 Sample Output d1=5.50 c2=(5.50, 0.00)  

第十五周oj刷题——Problem D: C++习题 对象数组输入与输出

Description 建立一个对象数组,内放n(n<10)个学生的数据(学号.成绩),用指针指向数组首元素,输出第奇数(1,3,5,7)个学生的数据. Input n和n个学生的学号.成绩 Output 奇数学生的数据 Sample Input 5 101 78.5 102 85.5 103 98.5 104 100.0 105 95.5 Sample Output 101 78.50 103 98.50 105 95.50 /* All rights reserved. * 文件名称:tes

第十五周oj刷题——Problem A: 长方柱类【C++ 类定义】

Description 编写基于对象的程序,求长方柱(Bulk)的体积.数据成员包括长(length).宽(width).高(heigth).体积,要求用成员函数实现下面的功能: (1)由键盘输入长方柱的长.宽.高: (2)计算长方柱的体积(volume)和表面积(areas): (3)输出这长方柱的体积和表面积. Input 长方柱的长.宽.高 Output 长方柱的体积和表面积 Sample Input 2 3 4 Sample Output 24 52 /* All rights rese

第十五周oj刷题——Problem K: C++习题 复数类--重载运算符+,-,*,/

Description 定义一个复数类Complex,重载运算符"+","-","*","/",使之能用于复数的加.减.乘.除.运算符重载函数作为Complex类的成员函数.编写程序,分别求两个复数之和.差.积和商. Input 两个复数 Output 两个复数之和.差.积和商 Sample Input 3 4 5 -10 Sample Output c1+c2=(8.00,-6.00i) c1-c2=(-2.00,14.00