• [置顶] 81——复数类运算符的重载 double数据与复数之间的运算 任务三


    /*
    *【项目1】实现复数类中的运算符重载
    * 程序的版权和版本声明部分
    * Copyright (c)2012, 烟台大学计算机学院学生
    * All rightsreserved.
    * 文件名称: object.cpp
    * 攻城菜鸟:蛋蛋
    * 完成日期: 2013年  4 月  18 日
    * 版本号: v1.0
    * 输入描述:两个复数的真部和虚部
    * 问题描述:方案三:在方案二的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。设Complex c; double d; c?d和d?c的结果为“将d视为实部为d的复数同c运算”的结果(其中?为+、-、*、/之一)。另外,再定义一目运算符 -,-c相当于0-c。
    * 程序输出:使用运算符运算的结果
    */
    #include <iostream>
    
    using std::cout;
    using std::endl;
    
    class Complex
    {public:
        Complex(){real=0;imag=0;}
        Complex(double r,double i){real=r;imag=i;}
        friend Complex operator+(double &d,Complex &c2);
        friend Complex operator-(double &d,Complex &c2);
        friend Complex operator*(double &d,Complex &c2);
        friend Complex operator/(double &d,Complex &c2);
        friend Complex operator+(Complex &c,double &d);
        friend Complex operator-(Complex &c,double &d);
        friend Complex operator*(Complex &c,double &d);
        friend Complex operator/(Complex &c,double &d);
        friend Complex operator-(Complex &c);
        void display();
     private:
        double real;
        double imag;
    };
    //下面定义成员函数
    Complex operator+(double &d,Complex &c){
    	 return Complex(d+c.real,c.imag);
    }
    Complex operator-(double &d,Complex &c){
      return Complex(d-c.real,c.imag);
     }
    Complex operator*(double &d,Complex &c){
        return Complex(d*c.real,d*c.imag);
     }
    Complex operator/(double &d,Complex &c){
        return Complex(d*c.real/(c.real*c.real+c.imag*c.imag),-d*c.imag/(c.real*c.real+c.imag*c.imag));
     }
    Complex operator-(Complex &c){
    return Complex(0-c.real,0-c.imag);
    }
    Complex operator+(Complex &c,double &d){
    	 return Complex(c.real+d,c.imag);
    }
    Complex operator-(Complex &c,double &d){
    	 return Complex(c.real-d,c.imag);
    }
    Complex operator*(Complex &c,double &d){
    	 return Complex(c.real*d,c.imag*d);
    }
    Complex operator/(Complex &c,double &d){
    	 return Complex(c.real/d,c.imag/d);
    }
    void Complex::display(){
    cout<<"("<<real<<","<<imag<<"i)"<<endl;
    }
    //下面是测试函数
    int main()
    {
        double d=3.14;
    	Complex c(5,-10),c3;
        cout<<"d="<<d<<endl;;
        cout<<"c=";
        c.display();
        c3=d+c;
        cout<<"d+c=";
        c3.display();
        c3=d-c;
        cout<<"d-c=";
        c3.display();
        c3=d*c;
        cout<<"d*c=";
        c3.display();
        c3=d/c;
        cout<<"d/c=";
        c3.display();
        c3=c+d;
        cout<<"c+d=";
        c3.display();
        c3=c-d;
        cout<<"c-d=";
        c3.display();
        c3=c*d;
        cout<<"c*d=";
        c3.display();
        c3=c/d;
        cout<<"c/d=";
        c3.display();
        c3=-c;
        cout<<"-c=";
        c3.display();
    return 0;
    }
    


  • 相关阅读:
    ES6的模块化历史
    javaee笔记之web.xml文件内的标签到底什么意思
    iTOP4412设备驱动学习五--地址和存储的概念
    iTOP4412设备驱动学习四--嵌入式硬件研发流程PCB和原理图的查看
    iTOP4412设备驱动学习三--设备节点的生成和调用:杂项设备驱动的注册和调用
    iTOP4412设备驱动学习二--在module中注册设备
    iTOP4412设备驱动学习一--设备和驱动的注册
    Linux下阅读源代码工具安装
    结构体
    综合实例:个人银行账户管理程序
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3029619.html
Copyright © 2020-2023  润新知