算法提高 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\n");

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

 

你可能感兴趣的:(四则运算)