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
a+b=12.1+10.1i
a-b=-5.7-1.1i

提示

#include <iostream>
using namespace std;
class Complex
{
public:
    Complex(double r,double i)
    {
        rm=r;
        im=i;
    }
    friend Complex operator +(Complex &c1,Complex &c2);
    friend Complex operator -(Complex &c1,Complex &c2);
    void display();

private:
    double rm,im;
};
void Complex::display()
{
    cout<<"="<<rm;
    if(im>=0) cout<<"+"<<im<<"i"<<endl;
    else cout<<im<<"i"<<endl;
}
Complex operator+(Complex &c1,Complex &c2)
{
    return Complex(c1.rm+c2.rm,c1.im+c2.im);
}
Complex operator-(Complex &c1,Complex &c2)
{
    return Complex(c1.rm-c2.rm,c1.im-c2.im);
}
int main()
{
    Complex c1(3.2,4.5),c2(8.9,5.6);
    Complex c3(0,0);
    cout<<"a";
    c1.display();
    cout<<"b";
    c2.display();
    cout<<"a+b";
    c3=c1+c2;
    c3.display();
    cout<<"a-b";
    c3=c1-c2;
    c3.display();
    return 0;
}
时间: 2024-08-02 02:44:31

4-1复数类的运算符重载(SDUTOJ2677)的相关文章

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)输

复数中的运算符重载(续)

输入代码: /* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2015年5月11日 *版 本 号:v2.0 * *问题描述:在复数类中的运算符重载基础上 (1)再定义一目运算符 -,-c相当于0-c. (2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然. *程序输入:按要求输入两个复

[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&

YTUOJ-矩形类中运算符重载

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

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

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

c++实现复数运算(运算符重载)

#include <iostream> using namespace std; class Complex { public: //构造函数 Complex(int real=2,int image=4) :_real(real) ,_image(image) { cout<<"构造函数"<<endl; } //拷贝构造函数 Complex(Complex& c) { cout<<"拷贝构造函数"<&l