• YTU 2535: C++复数运算符重载(+与<<)


    2535: C++复数运算符重载(+与<<)

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 867  解决: 532

    题目描述

    定义一个复数类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+(double &x)
    {
        Complex c;
        c.real=x+real;
        c.imag=imag;
        return c;
    }
    Complex Complex::operator+(Complex &c1)
    {
        Complex c;
        c.real=real+c1.real;
        c.imag=imag+c1.imag;
        return c;
    }
    ostream& operator << (ostream& output, const Complex& c)
    {
        output<<"("<<setiosflags(ios::fixed)<<setprecision(2)<<c.real;
        output<<setiosflags(ios::fixed)<<setprecision(2);
        if(c.imag<0)cout<<c.imag<<"i)"<<endl;
        else cout<<"+"<<c.imag<<"i)"<<endl;
        return output;
    }
    Complex operator+(double &x,Complex &c1)
    {
        return Complex(x+c1.real,c1.imag);
    }
    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;
    }

  • 相关阅读:
    vue-awesome-swiper 子项目内容高度适配问题
    ajax的原理及应用
    display:none opacity:0以及visibility:hidden的区别
    javascript 创建型设计模式
    圣杯布局和双飞翼布局
    javascript->对象继承
    js 宏任务和微任务
    android->按钮底部定位上移
    ios移动端开发的坑
    jvm系列 (五) ---类加载机制
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989488.html
Copyright © 2020-2023  润新知