1 #include<iostream> 2 #include<stdio.h> 3 #include <algorithm> 4 #include<string.h> 5 using namespace std; 6 class complex 7 { 8 private: 9 int i,a,b,c,d,j,m,mark[2],w,flog; 10 float e,f; 11 char x[10],y[10],ax; 12 public: 13 void cint() 14 { 15 cout<<"输入第一个数"<<endl; 16 scanf("%s",x); 17 cout<<"输入运算符"<<endl; 18 cin>>ax; 19 cout<<"输入第二个数"<<endl; 20 scanf("%s",y); 21 } 22 int nxh(int x) 23 { 24 int p,sum; 25 for(p=0,sum=1;p<x;p++) 26 sum=sum*10; 27 return sum; 28 } 29 void cpucin() 30 { 31 int n,l,ql; 32 for(l=1,ql=1,j=0,m=0,flog=0,n=0;j<strlen(x);j++) 33 { 34 if(x[0]=='-') ql=-1; 35 if(x[j]=='+') m=j; 36 if(x[j]=='i') n=j; 37 if(x[j]=='-'&&j!=0) 38 { 39 m=j; 40 l=-1; 41 } 42 43 44 } 45 if(m==0) 46 { 47 if(n==0) 48 { 49 m=strlen(x); 50 flog=1; 51 } 52 else flog=2; 53 } 54 if(flog==0||flog==1) 55 { 56 if(ql==1) j=0; 57 else j=1; 58 for(a=0;j<m;j++) 59 { 60 a+=(x[j]-'0')*nxh(m-j-1); 61 } 62 a=a*ql; 63 } 64 if(flog==0||flog==2) 65 { 66 if(flog==0) j=m+1; 67 if(flog==2&&ql==1) j=m; 68 else j=m+1; 69 for(b=0;j<strlen(x)-1;j++) 70 b+=(x[j]-'0')*nxh(strlen(x)-2-j); 71 if(a==0) b=b*ql; 72 else b=b*l; 73 } 74 else b=0; 75 for(l=1,ql=1,j=0,m=0,flog=0,n=0;j<strlen(y);j++) 76 { 77 if(y[0]=='-') ql=-1; 78 if(y[j]=='+') m=j; 79 if(y[j]=='i') n=j; 80 if(y[j]=='-'&&j!=0) 81 { 82 m=j; 83 l=-1; 84 } 85 86 87 } 88 if(m==0) 89 { 90 if(n==0) 91 { 92 m=strlen(y); 93 flog=1; 94 } 95 else flog=2; 96 } 97 if(flog==0||flog==1) 98 { 99 if(ql==1) j=0; 100 else j=1; 101 for(c=0;j<m;j++) 102 { 103 c+=(y[j]-'0')*nxh(m-j-1); 104 } 105 c=c*ql; 106 } 107 if(flog==0||flog==2) 108 { 109 if(flog==0) j=m+1; 110 if(flog==2&&ql==1) j=m; 111 else j=m+1; 112 for(d=0;j<strlen(y)-1;j++) 113 d+=(y[j]-'0')*nxh(strlen(y)-2-j); 114 if(c==0) d=d*ql; 115 else d=d*l; 116 117 118 } 119 else d=0; 120 } 121 void scpu() 122 { 123 if(ax=='+') jiafa(); 124 if(ax=='-') jianfa(); 125 if(ax=='*') chengfa(); 126 if(ax=='/') chufa(); 127 } 128 void jiafa() 129 { 130 e=a+c; 131 f=b+d; 132 } 133 void jianfa() 134 { 135 e=a-c; 136 f=b-d; 137 } 138 void chengfa() 139 { 140 e=a*c-b*d; 141 f=a*d+c*b; 142 } 143 void chufa() 144 { 145 e=(a*c+b*d)/(c*c-d*d); 146 f=(b*c-a*d)/(c*c-d*d); 147 } 148 void cput() 149 { 150 if(f>0&&e!=0) 151 cout<<e<<'+'<<f<<'i'<<endl; 152 if(f==0&&e==0) 153 cout<<0<<endl; 154 if(e==0&&f!=0) 155 cout<<f<<'i'<<endl; 156 if(e!=0&&f==0) 157 cout<<e<<endl; 158 if(e!=0&&f<0) 159 cout<<e<<f<<'i'<<endl; 160 161 162 } 163 164 165 166 } x1; 167 int main() 168 { 169 x1.cint(); 170 x1.cpucin(); 171 x1.scpu(); 172 x1.cput(); 173 system("pause"); 174 return 0; 175 }