zoukankan      html  css  js  c++  java
  • C++复数运算 重载

    近期整理下很久前写的程序,这里就把它放在博文中了,有些比较简单,但是很有学习价值。  


     下面就是自己很久前实现的复数重载代码,这里没有考虑特殊情况,像除法中,分母不为零情况。

    #include <iostream>
    /*
    #include <conio.h>
    #include<stdio.h>
    #include<iomanip>
    #include<string>
    #include<sstream>
    */
    using namespace std;
    
    class complex
    {
        double real,imag;
    public:
        complex(double,double);
        void disp(char *);
        friend complex operator + (complex,complex);
        friend complex operator - (complex,complex);
        friend complex operator * (complex,complex);
        friend complex operator / (complex,complex);
    };
    
    complex::complex (double r=0,double i=0)
    {
        real = r;
        imag = i;
    }
    
    void complex::disp (char *str)
    {
        cout.unsetf(ios::showpos);
        cout<<str<<"="<<real;
        if (imag)
        {
            cout.setf(ios::showpos);
            cout<<imag<<'i';
        }
        cout<<endl;
        cout.unsetf(ios::showpos);
    }
    
    complex operator + (complex cpl1,complex cpl2)
    {
        double t=cpl1.real+cpl2.real;
        double i=cpl1.imag+cpl2.imag;
        return complex(t,i);
    }
    
    complex operator - (complex cpl1,complex cpl2)
    {
        double t=cpl1.real-cpl2.real;
        double i=cpl1.imag-cpl2.imag;
        return complex(t,i);
    }
    
    complex operator * (complex cpl1,complex cpl2)
    {
        double t=cpl1.real*cpl2.real - cpl1.imag*cpl2.imag;
        double i=cpl1.real*cpl2.imag + cpl1.imag*cpl2.real;
        return complex(t,i);
    }
    
    complex operator / (complex cpl1,complex cpl2)
    {
        double t=(cpl1.real*cpl2.real+cpl1.imag*cpl2.imag)/(cpl2.real*cpl2.real+cpl2.imag*cpl2.imag);
        double i=(cpl1.imag*cpl2.real-cpl1.real*cpl2.imag)/(cpl2.real*cpl2.real+cpl2.imag*cpl2.imag);
        return complex(t,i);
    }
    
    int main(void)
    {
        complex c1(25,40),c2(100,200),c3(0);
        c1.disp("c1");
        c2.disp("c2");
        c3=c1+c2;
        c3.disp("c3");
        c3=c1-c3;
        c3.disp("c3");
        c3=c1*c2;
        c3.disp("c3");
        c3=c1/c2;
        c3.disp("c3");
        getchar();
        return 0;
    }
  • 相关阅读:
    计算机网络为什么是这样样子?
    MySQL技术内幕 InnoDB存储引擎 B+树索引的使用 笔记
    后端性能-batch 化的想法
    稳定高效的服务来自于稳定而合理的数据结构
    gRPC 学习了解记录
    Go 进阶训练营 Week02: error 错误处理
    生活小感受
    Nginx 499 排查到docker 中一个进程一直在空转
    方法论和原理总结
    Debug
  • 原文地址:https://www.cnblogs.com/ywl925/p/3775803.html
Copyright © 2011-2022 走看看