zoukankan      html  css  js  c++  java
  • [YTU]_2535( C++复数运算符重载(+与<<))

    题目描述

    定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算与输出操作。
    (1)参加运算的两个运算量可以都是类对象,也可以其中有一个是实数,顺序任意。例如,c1+c2,d+c1,c1+d均合法(设d为实数,c1,c2为复数)。
    (2)输出的算数,在复数两端加上括号,实部和虚部均保留两位小数,如(8.23+2.00i)、(7.45-3.40i)、(-3.25+4.13i)等。
    编写程序,分别求两个复数之和、整数和复数之和,并且输出。

    请在下面的程序段基础上完成设计:
    #include <iostream>
    #include <iomanip>
    using namespace std;

    class Complex
    {
    public:
    Complex():real(0),imag(0) {}
    Complex(double r,double i):real(r),imag(i) {}
    Complex operator+(Complex &);
    Complex operator+(double &);
    friend Complex operator+(double&,Complex &);
    friend ostream& operator << (ostream& output, const Complex& c);
    private:
    double real;
    double imag;
    };

    //将程序需要的其他成份写在下面,只提交begin到end部分的代码
    //******************** begin ********************


    //********************* end ********************
    int main()
    {
    //测试复数加复数
    double real,imag;
    cin>>real>>imag;
    Complex c1(real,imag);
    cin>>real>>imag;
    Complex c2(real,imag);
    Complex c3=c1+c2;
    cout<<"c1+c2=";
    cout<<c3;

    //测试复数加实数
    double d;
    cin>>real>>imag;
    cin>>d;
    c3=Complex(real,imag)+d;
    cout<<"c1+d=";
    cout<<c3;

    //测试实数加复数
    cin>>d;
    cin>>real>>imag;
    c1=Complex(real,imag);
    c3=d+c1;
    cout<<"d+c1=";
    cout<<c3;

    return 0;
    }

    输入

    一个复数的实部和虚部,另一个复数的实部和虚部 
    一个复数的实部和虚部,一个实数
    一个实数,一个复数的实部和虚部

    输出

    两个复数之和、复数和实数之和,实数和复数之和。

    样例输入

    3 4 5 -10
    3 4 5
    5 3 4

    样例输出

    c1+c2=(8.00-6.00i)
    c1+d=(8.00+4.00i)
    d+c1=(8.00+4.00i)

    提示

    只提交自己定义的函数部分,控制输出小数点后两位,用 setiosflags(ios::fixed);和setprecision(2);控制

    #include <iostream>
    #include <iomanip>
    using namespace std;
     
    class Complex
    {
    public:
        Complex():real(0),imag(0) {}
        Complex(double r,double i):real(r),imag(i) {}
        Complex operator+(Complex &);
        Complex operator+(double &);
        friend Complex operator+(double&,Complex &);
        friend ostream& operator << (ostream& output, const Complex& c);
    private:
        double real;
        double imag;
    };
     
    Complex Complex::operator+(Complex &c)
    {return Complex(real+c.real,imag+c.imag);}
    Complex Complex::operator+(double &r)
    {return Complex(real+r,imag);}
    Complex operator+(double &r,Complex&c)
    {return Complex(r+c.real,c.imag);}
    ostream& operator<<(ostream &cout,const Complex &c)
    {
        cout<<setiosflags(ios::fixed);
            cout<<setprecision(2);cout<<'('<<c.real;
    if(c.imag>0)
    cout<<'+';
    cout<<c.imag<<"i)"<<endl;
    }
     
    int main()
    {
        //测试复数加复数
        double real,imag;
        cin>>real>>imag;
        Complex c1(real,imag);
        cin>>real>>imag;
        Complex c2(real,imag);
        Complex c3=c1+c2;
        cout<<"c1+c2=";
        cout<<c3;
     
        //测试复数加实数
        double d;
        cin>>real>>imag;
        cin>>d;
        c3=Complex(real,imag)+d;
        cout<<"c1+d=";
        cout<<c3;
     
        //测试实数加复数
        cin>>d;
        cin>>real>>imag;
        c1=Complex(real,imag);
        c3=d+c1;
        cout<<"d+c1=";
        cout<<c3;
     
        return 0;
    }

  • 相关阅读:
    越大优先级越高,优先级越高被OS选中的可能性就越大
    锁标记如果过多,就会出现线程等待其他线程释放锁标记
    使用带缓冲区的输入输出流的速度会大幅提高
    Bufferread有readline()使得字符输入更加方便
    java的开发主要以http为基础
    UDP也需要现有Server端,然后再有Client端
    端口是一种抽象的软件结构,与协议相关
    具有全球唯一性,相对于internet,IP为逻辑地址
    判断是否一个属性或对象可序列化
    把对象通过流序列化到某一个持久性介质称为对象的可持久化
  • 原文地址:https://www.cnblogs.com/sxy201658506207/p/7586341.html
Copyright © 2011-2022 走看看