第十七周oj刷题——Problem A: 实现复数类中的加运算符重载【C++运算符重载】

Description

int家有i1和i2弟兄俩,小手一拉i1+i2,加起来了;double家有d1和d2姐妹俩,小手也一拉,d1+d2,也加起来了。C++村子里来了复数(Complex)一家子,也有俩兄弟c1和c2,想要来个累加,笨乎乎地,c1.add(c2)。c1和c2伤心极了,也想像其他小朋友一样,小手一拉,c1+c2,也能加起来。这个任务交给了正在看题的魔术师,帮他们一个忙,让复数也能用+号相加吧。(可以复制提示部分的代码开始你的编程)

Input

四个数,分别代表两个虚数c1和c2的实部和虚部。如输入2.5 3.1 -4.5 0.3,代表两个虚数:c1(2.5+3.1i), c2(-4.5+0.3i)

Output

两个虚数相加的结果,格式(a,bi)形式

Sample Input

2.5 3.1 -4.5 0.3

Sample Output

(-2,3.4i)
/* All rights reserved.
 * 文件名称:test.cpp
 * 作者:陈丹妮
 * 完成日期:2015年 7 月 1 日
 * 版 本 号:v1.0
 */  

#include <iostream>
using namespace std;
class Complex
{
public:
    Complex(){}
//声明需要的成员或友元函数,包括构造函数、用于重载运算符的函数及用于显示结果的函数
    Complex(double r,double i):real(r),imag(i){}
    Complex operator +(Complex &c2);
    void display();
private:
    double real;
    double imag;
};
Complex Complex::operator +(Complex &c2)
{
    Complex c;
    c.real=real+c2.real;
    c.imag=imag+c2.imag;
    return c;
}
void Complex::display()
{
    cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
//下面定义成员函数
//下面用main()函数测试,完成输入输出
int main()
{
    double cr1, ci1, cr2, ci2;
    cin>>cr1>>ci1>>cr2>>ci2;
    Complex c1(cr1, ci1),c2(cr2, ci2),c3;
    c3=c1+c2;
    c3.display();
    return 0;
}
心得体会:这道题是很典型也很简单,有个问题需要强调一下,默认构造函数一般还是写上还是比较好,写成员函数时,肯能会定义一个不需要参数的对象,那么就需要用到默认构造函数。所以为了避免出错,还是写上保险。继续努力吧!!!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 09:17:34

第十七周oj刷题——Problem A: 实现复数类中的加运算符重载【C++运算符重载】的相关文章

第十六周oj刷题——Problem C: B 求类中数据成员的最大值-类模板

Description 声明一个类模板,类模板中有三个相同类型的数据成员,有一函数来获取这三个数据成员的最大值. Input 分别输入3个整数,3个浮点数,3个字符 Output 3个整数的最大值 3个浮点数中的最大值 3个字符中的最大值 Sample Input 9 5 6 1.1 3.4 0.9 a b c Sample Output 9 3.40 c /* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 6 月 25 日

第十六周oj刷题——Problem D: B 友元类-计算两点间距离

Description 类Distance定义为类Point的友元类来实现计算两点之间距离的功能. Point类中有两个私有数据成员X和Y来表示点的两个坐标(横坐标和纵坐标), 成员函数需要自己定义. 主程序输入两个Point点的坐标,计算两个点之间的距离. Input 两个点的坐标(横坐标和纵坐标) Output 两个点的距离(保留了两位小数) Sample Input 1.0 1.0 2.0 2.0 Sample Output 1.41 /* All rights reserved. * 文

第十七周oj刷题——Problem D: C++习题 输入输出--公用继承

Description Student类含有私有数据成员:num,name,sex,公有成员函数: 输入函数get_value()和输出函数display().采用公用继承方式实现类Student1,增加数据成员:age,addr,成员函数:get_value_1()和display_1().在程序运行时输入num,name,sex,age,addr的值,调用输出函数输出以上5个数据的值. Input 输入num,name,sex,age,addr的值 Output 输出num,name,sex

第十七周oj刷题——Problem E: C++习题 输入输出--私有继承

Description Student类含有私有数据成员:num,name,sex,公有成员函数: 输入函数get_value()和输出函数display().采用私有继承方式实现类Student1,增加数据成员:age,addr,成员函数:get_value_1()和display_1().在程序运行时输入num,name,sex,age,addr的值,调用输出函数输出以上5个数据的值. Input 输入num,name,sex,age,addr的值 Output 输出num,name,sex

第十七周oj刷题——Problem F: C++习题 输入输出--保护继承

Description Student类含有私有数据成员:num,name,sex,公有成员函数: 输入函数get_value()和输出函数display().采用私有保护方式实现类Student1,增加数据成员:age,addr,成员函数:get_value_1()和display_1().在程序运行时输入num,name,sex,age,addr的值,调用输出函数输出以上5个数据的值. Input 输入num,name,sex,age,addr的值 Output 输出num,name,sex

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

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

第十七周oj刷题——Problem B: 分数类的四则运算【C++】

Description 编写分数类Fraction,实现两个分数的加.减.乘和除四则运算.主函数已给定. Input 每行四个数,分别表示两个分数的分子和分母,以0 0 0 0 表示结束. Output 空格分隔的两个分数的减和除的结果. Sample Input 1 2 -1 2 4 3 3 4 0 0 0 0 Sample Output 1 -1 7/12 16/9 /* All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 7

第十五周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 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年