生活随笔
收集整理的這篇文章主要介紹了
复数的运算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 }
總結
以上是生活随笔為你收集整理的复数的运算的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。