码迷,mamicode.com
首页 > 编程语言 > 详细

蓝桥杯 算法提高 6-17 复数四则运算

时间:2015-04-05 01:04:25      阅读:362      评论:0      收藏:0      [点我收藏+]

标签:

算法提高 6-17复数四则运算  
时间限制:1.0s   内存限制:512.0MB
  设计复数库,实现基本的复数加减乘除运算。
  输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
  注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i

 

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<algorithm>
 5 using namespace std;
 6 struct num{
 7     double r,e;
 8 };
 9 num add(num a,num b){
10     num c;
11     c.r=a.r+b.r;
12     c.e=a.e+b.e;
13     return c;
14 }
15 num sub(num a,num b){
16     b.r=-b.r;
17     b.e=-b.e;
18     return add(a,b);
19 }
20 num mul(num a,num b){
21     num c;
22     c.r=a.r*b.r-a.e*b.e;
23     c.e=a.r*b.e+a.e*b.r;
24     return c;
25 }
26 num div(num a,num b){
27     num c;
28     b.e=-b.e;
29     c=mul(a,b);
30     double m=b.e*b.e+b.r*b.r;
31     c.r=c.r/m;
32     c.e=c.e/m;
33     return c;
34 }
35 int main(){
36     //freopen("D:\\input.txt","r",stdin);
37     num a,b,c;
38     char cal;
39     while(cin>>a.r>>a.e>>cal>>b.r>>b.e){//scanf("%f %f",&a.r,&a.e),cin>>cal,scanf("%f %f",&cal,&b.r,&b.e)){
40         //cout<<cal<<endl;
41         switch(cal){
42         case +:{
43             c=add(a,b);
44             cout<<c.r;
45             if(c.e>0){
46                 cout<<"+";
47             }
48             cout<<c.e<<"i"<<endl;
49             break;
50         }
51         case -:{
52             c=sub(a,b);
53             cout<<c.r;
54             if(c.e>0){
55                 cout<<"+";
56             }
57             cout<<c.e<<"i"<<endl;
58             break;
59         }
60         case *:{
61             c=mul(a,b);
62             cout<<c.r;
63             if(c.e>0){
64                 cout<<"+";
65             }
66             cout<<c.e<<"i"<<endl;
67             break;
68         }
69         case /:{
70             if(b.r==0&&b.e==0){
71                 cout<<"error"<<endl;
72 
73             }
74             else{
75                 c=div(a,b);
76                 cout<<c.r;
77                 if(c.e>0){
78                     cout<<"+";
79                 }
80                 cout<<c.e<<"i"<<endl;
81             }
82             break;
83         }
84         }
85     }
86     return 0;
87 }

 

 

蓝桥杯 算法提高 6-17 复数四则运算

标签:

原文地址:http://www.cnblogs.com/Deribs4/p/4393313.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!