构造函数实现复数的加减乘除
实部虚部为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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧