收藏 分销(赏)

C++实现两个复数相加.docx

上传人:精*** 文档编号:2277936 上传时间:2024-05-24 格式:DOCX 页数:5 大小:21.17KB 下载积分:6 金币
下载 相关 举报
C++实现两个复数相加.docx_第1页
第1页 / 共5页
C++实现两个复数相加.docx_第2页
第2页 / 共5页


点击查看更多>>
资源描述
______________________________________________________________________________________________________________ #include "iostream.h" #include <stdio.h> #include <math.h> typedef struct complex { int real; int imaginary; void showComplex() { if(imaginary==0) { cout<<real; } else if(real==0) { cout<<imaginary<<"i"; } else { cout<<'('<<real<<'+'<<imaginary<<"i)"; } } }Complex; //运算符重载 Complex operator + (Complex a,Complex b) { Complex sum; sum.real=a.real+b.real; sum.imaginary=a.imaginary+b.imaginary; return sum; } Complex getComplex() { Complex com; com.real=0; com.imaginary=0; char comArr[100]; cin>>comArr; int realflag=0; int imaflag=-1; int realover,ope,imaover,iloc; realover=ope=imaover=iloc=0; for(int i=0;comArr[i]!='\0';i++) { /******************************************************/ if(realflag==0 && comArr[i]-'0'>=0 && comArr[i]-'0'<=9)//默认从实部开始计算 { com.real =com.real*10+comArr[i]-'0'; realover=i; // cout<<com.real<<endl; } else if(comArr[i]=='+') { realflag=1;//标志输入了'+',表示实部计算完毕 imaflag=0;//标志可以开始计算虚部 ope=i; } else if(imaflag==0 && comArr[i]-'0'>=0 && comArr[i]-'0'<=9)//计算虚部 { com.imaginary =com.imaginary*10+comArr[i]-'0'; imaover=i; // cout<<com.imaginary<<endl; } else if(comArr[i]=='i') { imaflag=1;//标志虚部存在 iloc=i; } else { cout<<"输入错误!默认为0"<<endl; break; } } //realover=ope=imaover=iloc=0 if(iloc!=0&&ope!=0) { if(iloc+1==ope)//输入时虚部在前实部在后 { int temp=com.imaginary; com.imaginary=com.real; com.real=temp; } else if(realover-ope!=-1 || imaover<ope ||imaover+1!=iloc) { cout<<"输入错误!默认为0"<<endl; com.imaginary=0; com.real=0; } } if(realflag==0 && imaflag==-1)//表示未检查到输入'i',表示无虚部 { com.imaginary=0; } //表示未检查输入'+',但存在'i',说明无实部。把实部计算值赋值给虚部,实部清0 else if(realflag==0 && imaflag==1) { com.imaginary=com.real; com.real=0; } return com; } int main(int argc, char* argv[]) { Complex a; Complex b; Complex sum; cout<<"\t\t运算符重载,实现两个复数求和\n"<<endl; cout<<"输入第一个复数(形如\"6+2i\"):"<<flush; a=getComplex(); // scanf("%d+%di",&a.real,&a.imaginary); cout<<"输入第二个复数(形如\"6+2i\"):"<<flush; b=getComplex(); // scanf("%d+%di",&b.real,&b.imaginary); // a.real=3; // a.imaginary=4; // b.real=2; // b.imaginary=4; cout<<"这两个复数的和为:"<<endl; sum=a+b; a.showComplex(); cout<<'+'; b.showComplex(); cout<<'='; sum.showComplex(); cout<<endl; return 0; } Welcome To Download !!! 欢迎您的下载,资料仅供参考! 精品资料
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服