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

http://lx.lanqiao.org/problem.page?gpid=T255

算法提高 6-17复数四则运算  
时间限制:1.0s   内存限制:512.0MB
    
  设计复数库,实现基本的复数加减乘除运算。
  输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
  注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
 
分析:
 
注意除法的运算,分母为0时为:“error”
 
AC代码:
 
 1 #include <stdio.h>
 2 #include <iostream>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     double a , b , c , d ;
 8     char str;
 9     scanf("%lf %lf %c %lf %lf",&a,&b,&str,&c,&d);
10     if(str == '+')
11     {
12         double add1 = a + c;
13         double add2 = b + d;
14         if(add2 < 0)
15             cout << add1 << add2 << "i" << endl;
16         else
17             cout << add1 << "+" << add2 << "i" << endl;
18     }
19     else if(str == '-')
20     {
21         double jian1 = a - c;
22         double jian2 = b - d;
23         if(jian2 < 0)
24             cout << jian1 << jian2 << "i" << endl;
25         else
26             cout << jian1 << "+" << jian2 << "i" << endl;
27     }
28     else if(str == '*')
29     {
30         double cheng1 = a * c - b * d;
31         double cheng2 = a * d + b * c;
32         if(cheng2 < 0)
33             cout << cheng1 << cheng2 << "i" << endl;
34         else
35             cout << cheng1 << "+" << cheng2 << "i" << endl;
36     }
37     else
38     {
39         if(c == 0 && d == 0)
40             printf("error
");
41         else
42         {
43             double chu1 = 1.0 * (a * c + b * d ) / (c * c + d * d );
44             double chu2 = 1.0 * (b * c - a * d ) / (c * c + d * d );
45             if(chu2 < 0)
46                 cout << chu1 << chu2 << "i" << endl;
47             else
48                 cout << chu1 << "+" << chu2 << "i" << endl;
49         }
50     }
51     return 0;
52 }
View Code
原文地址:https://www.cnblogs.com/jeff-wgc/p/4450732.html