面向对象程序设计上机练习十(运算符重载)

Time Limit: 1000MS Memory limit: 65536K

题目描述

定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运 算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2、i+c1、c1+i均合法。(其中i是整数,c1、c2是复数),编程实现求 2个复数之和、整数与复数之和。

输入

输入有三行:第1行是第1个复数c1的实部和虚部,以空格分开。第2行是第2个复数c2的实部和虚部,以空格分开。第3行是1个整数i的值。

输出

输出有三行:
第1行是2个复数c1和c2的和,显示方式:实部+虚部i
第2行是第1个复数c1加i的值,显示方式:实部+虚部i
第3行是i加第1个复数c1的值,显示方式:实部+虚部i

示例输入

2 3
3 5
10

示例输出

5+8i
12+3i
12+3i
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

class Complex
{
    private:
      int real, imag;
    public:
      Complex()
      {
          real=0; imag=0;
      }
      Complex(double r, double i)
      {
          real=r; imag=i;
      }
      friend Complex operator +(Complex &c1, Complex &c2 )
      {
          return Complex(c1.real+c2.real, c1.imag+c2.imag );
      }

      friend Complex operator +(int &i, Complex &c2)
      {
          return Complex(i+c2.real, c2.imag );
      }
      friend Complex operator +(Complex &c1, int &i )
      {
          return Complex(i+c1.real, c1.imag );
      }
      void sett();
      void disp();
}c1,c2;

void Complex::sett()
{
    cin>>real>>imag;
}

void Complex::disp()
{
    if(imag<0)
    {
        cout<<real<<imag<<‘i‘<<endl;
    }
    else
    cout<<real<<‘+‘<<imag<<‘i‘<<endl;
}

int main()
{
    int ii;
    Complex a, b, c;

    c1.sett();
    c2.sett();
    cin>>ii;

    a=c1+c2;
    a.disp();

    b=c1+ii;
    b.disp();

    c=ii+c1;
    c.disp();

    return 0;
}
时间: 2024-10-14 19:57:34

面向对象程序设计上机练习十(运算符重载)的相关文章

面向对象程序设计上机练习十一(运算符重载)(SDUTOJ1273)

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1273 题目描述 有两个矩阵a和b,均为2行3列,求两个矩阵之和.重载运算符“+”,使之能用于矩阵相加.如:c=a+b. 输入 第1.2行是矩阵a的值,数据以空格分开.第3.4行是矩阵b的值,数据以空格分开. 输出 2个矩阵a.b之和,以行列形式显示. 示例输入 2 3 4 3 5 3 4 3 1 5 4 3 示例输出 6 6 5 8 9 6 来源 zl

sdut 面向对象程序设计上机练习十二(运算符重载)

面向对象程序设计上机练习十二(运算符重载) Time Limit: 1000MS Memory limit: 65536K 题目描述 处理一个复数与一个double数相加的运算,结果存放在一个double型变量d1中,输出d1的值.定义Complex(复数)类,在成员函数中包含重载类型转换运算符:operator double(){return real;} 输入 输入占两行: 第1行是一个复数的实部和虚部,数据以空格分开. 第2行是一个实数. 输出 输出占一行,复数的实部和实数之和,小数点后保

sdut 面向对象程序设计上机练习十(运算符重载)

面向对象程序设计上机练习十(运算符重载) Time Limit: 1000MS Memory limit: 65536K 题目描述 定义一个复数类Complex,重载运算符"+",使之能用于复数的加法运算.参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意.例如:c1+c2.i+c1.c1+i均合法.(其中i是整数,c1.c2是复数),编程实现求2个复数之和.整数与复数之和. 输入 输入有三行:第1行是第1个复数c1的实部和虚部,以空格分开.第2行是第2个复数c2的实

面向对象程序设计上机练习十二(运算符重载)(SDUTOJ1274)

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1274 题目描述 处理一个复数与一个double数相加的运算,结果存放在一个double型变量d1中,输出d1的值.定义Complex(复数)类,在成员函数中包含重载类型转换运算符:operator double(){return real;} 输入 输入占两行:第1行是一个复数的实部和虚部,数据以空格分开.第2行是一个实数. 输出 输出占一行,复数的实

sdut 面向对象程序设计上机练习十一(运算符重载)

面向对象程序设计上机练习十一(运算符重载) Time Limit: 1000MS Memory limit: 65536K 题目描述 有两个矩阵a和b,均为2行3列,求两个矩阵之和.重载运算符"+",使之能用于矩阵相加.如:c=a+b. 输入 第1.2行是矩阵a的值,数据以空格分开. 第3.4行是矩阵b的值,数据以空格分开. 输出 2个矩阵a.b之和,以行列形式显示. 示例输入 2 3 4 3 5 3 4 3 1 5 4 3 示例输出 6 6 5 8 9 6 来源 #include &

面向对象程序设计上机练习十一(运算符重载)

面向对象程序设计上机练习十一(运算符重载) Time Limit: 1000MS Memory limit: 65536K 题目描述 有两个矩阵a和b,均为2行3列,求两个矩阵之和.重载运算符“+”,使之能用于矩阵相加.如:c=a+b. 输入 第1.2行是矩阵a的值,数据以空格分开. 第3.4行是矩阵b的值,数据以空格分开. 输出 2个矩阵a.b之和,以行列形式显示. 示例输入 2 3 4 3 5 3 4 3 1 5 4 3 示例输出 6 6 5 8 9 6 #include <iostream

sdut 面向对象程序设计上机练习一(函数重载)

面向对象程序设计上机练习一(函数重载) Time Limit: 1000MS Memory limit: 65536K 题目描述 利用数组和函数重载求5个数最大值(分别考虑整数.单精度.长整数的情况). 输入 分别输入5个int型整数.5个float 型实数.5个long型正整数. 输出 分别输出5个int型整数的最大值.5个float 型实数的最大值.5个long型正整数的最大值. 示例输入 11 22 666 44 55 11.11 22.22 33.33 888.88 55.55 1234

sdut 面向对象程序设计上机练习二(函数模板)

面向对象程序设计上机练习二(函数模板) Time Limit: 1000MS Memory limit: 65536K 题目描述 利用数组和函数模板求5个数最大值(分别考虑整数.单精度.长整数的情况). 输入 分别输入5个int型整数.5个float 型实数.5个long型正整数. 输出 分别输出5个int型整数的最大值.5个float 型实数的最大值.5个long型正整数的最大值. 示例输入 11 22 666 44 55 11.11 22.22 33.33 888.88 55.55 1234

sdut 面向对象程序设计上机练习七(类和对象)

面向对象程序设计上机练习七(类和对象) Time Limit: 1000MS Memory limit: 65536K 题目描述 利用类的数据成员和成员函数完成下列操作:输入三个整数,输出它们的最大值. 输入 输入三个整数. 输出 输出3个整数的最大值. 示例输入 2 8 5 示例输出 8 这个就不做详细注释了,初学者也能尝试着看懂. #include <iostream> using namespace std; class shu { private: int a,b,c; public: