资源描述
______________________________________________________________________________________________________________
#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 !!!
欢迎您的下载,资料仅供参考!
精品资料
展开阅读全文