• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
magicat
博客园    首页    新随笔    联系   管理    订阅  订阅
C++复数的类+-*/

 构造函数实现复数的加减乘除

实部虚部为0的时候有点小问题

上一次的在下面

#include<iostream>
#include<complex>
using namespace std;

class Complex
{
public:
    Complex(){ r=0;i=0;}
    //void init(double real,double image){    r=real;i=image;        }
    Complex(double real,double image){    r=real;i=image;    }
    void add(Complex C1,Complex C2,Complex C){    
        C.r=C1.r+C2.r;C.i=C1.i+C2.i;    
        cout<<"(";    print(C1);    cout<<")";
        printf("+");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void subtraction(Complex C1,Complex C2,Complex C){    
        C.r=C1.r-C2.r;C.i=C1.i-C2.i;    
        cout<<"(";    print(C1);    cout<<")";
        printf("-");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void multi(Complex C1,Complex C2,Complex C){    
        C.r=C1.r*C2.r-C1.i*C2.i;
        C.i=C1.r*C2.i+C2.r*C1.i;    
        cout<<"(";    print(C1);    cout<<")";
        printf("*");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void divide(Complex C1,Complex C2,Complex C){    

        double moth=C2.r*C2.r+C2.i*C2.i;
        C.r=C1.r*C2.r+C1.i*C2.i;
        C.i=-C1.r*C2.i+C1.i*C2.r;
        C.r/=moth;
        C.i/=moth;
        cout<<"(";    print(C1);    cout<<")";
        printf("/");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void print(Complex C)
    {
        int flag=0;
        if(C.r!=0)    { cout<<C.r;flag=1; }
        if(C.i!=0)
        {
            if(flag==1)
            {
                if(C.i==1)    cout<<"+i";
                else if(C.i==-1)    cout<<"-i";
                else if(C.i>0)    cout<<"+"<<C.i<<"i";
                else if(C.i<0)    cout<<C.i<<"i";
            }
            else 
            {
                if(C.i==1)    cout<<"i";
                else if(C.i==-1)    cout<<"-i";
                else if(C.i>0)    cout<<C.i<<"i";
                else if(C.i<-0)    cout<<C.i<<"i";
            }
        }

    }

private: 
     double r,i; 
}; 


int main()
{
    double a,b,c,d;        cin>>a>>b>>c>>d;
    puts("");
    Complex C1(a,b),C2(c,d),C;
    
    C.add(C1,C2,C);
    C.subtraction(C1,C2,C);
    C.multi(C1,C2,C);
    C.divide(C1,C2,C);
    
}
/*
c++
1.编写程序实现复数的加法,乘法,并将结果按照实际情况输出
2.第2章课后习题尚未完成的,将其写到作业本上,已完成了的就不用了
c++
1.未完成学习通的同学尽快完成
2.用构造函数代替普通函数实现复数的加法和乘法
*/

 

 

 

 

 

#include<iostream>
#include<complex>
using namespace std;

class Complex
{
public:
    Complex(){ r=0;i=0;}
    void init(double real,double image){    r=real;i=image;        }
    void add(Complex C1,Complex C2,Complex C){    
        C.r=C1.r+C2.r;C.i=C1.i+C2.i;    
        cout<<"(";    print(C1);    cout<<")";
        printf("+");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void subtraction(Complex C1,Complex C2,Complex C){    
        C.r=C1.r-C2.r;C.i=C1.i-C2.i;    
        cout<<"(";    print(C1);    cout<<")";
        printf("-");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void multi(Complex C1,Complex C2,Complex C){    
        C.r=C1.r*C2.r-C1.i*C2.i;
        C.i=C1.r*C2.i+C2.r*C1.i;    
        cout<<"(";    print(C1);    cout<<")";
        printf("*");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void divide(Complex C1,Complex C2,Complex C){    
        double moth=C2.r*C2.r+C2.i*C2.i;
        C.r=C1.r*C2.r+C1.i*C1.i;
        C.i=-C1.r*C2.i+C1.i*C2.r;
        C.r/=moth;
        C.i/=moth;
        cout<<"(";    print(C1);    cout<<")";
        printf("/");
        cout<<"(";    print(C2);    cout<<")";
        printf("=");
        cout<<"(";    print(C);    cout<<")";    
        cout<<endl;
    }
    void print(Complex C)
    {
        int flag=0;
        if(C.r!=0)    { cout<<C.r;flag=1; }
        if(C.i!=0)
        {
            if(flag==1)
            {
                if(C.i==1)    cout<<"+i";
                else if(C.i==-1)    cout<<"-i";
                else if(C.i>0)    cout<<"+"<<C.i<<"i";
                else if(C.i<0)    cout<<C.i<<"i";
            }
            else 
            {
                if(C.i==1)    cout<<"i";
                else if(C.i==-1)    cout<<"-i";
                else if(C.i>0)    cout<<C.i<<"i";
                else if(C.i<-0)    cout<<C.i<<"i";
            }
        }

    }

private: 
     double r,i; 
}; 


int main()
{
    Complex C1,C2,C;
    C1.init(0,1),C2.init(1,1);
    C.add(C1,C2,C);
    C.subtraction(C1,C2,C);
    C.multi(C1,C2,C);
    C.divide(C1,C2,C);


}


/*

c++
1.编写程序实现复数的加法,乘法,并将结果按照实际情况输出
2.第2章课后习题尚未完成的,将其写到作业本上,已完成了的就不用了

*/

 

本文来自博客园,作者:magicat,转载请注明原文链接:https://www.cnblogs.com/magicat/p/16111971.html

posted on 2022-04-07 14:01  magicat  阅读(66)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3