算法提高 6-17复数四则运算
http://lx.lanqiao.org/problem.page?gpid=T255
算法提高 6-17复数四则运算
时间限制:1.0s 内存限制:512.0MB
设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按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 }
悠游天地间 all rights reserved. © 2013 -- 1 << 64