算法提高 6-17复数四则运算
Posted 多一份不为什么的坚持
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法提高 6-17复数四则运算相关的知识,希望对你有一定的参考价值。
算法提高 6-17复数四则运算
时间限制:1.0s 内存限制:512.0MB
设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
有一组数据就是通不过。
#include <iostream> #include <cstdio> #include <vector> #include <queue> #include <cstring> #include <algorithm> #include <cstdlib> #define for(i,x,n) for(int i=x;i<n;i++) #define ll long long int #define INF 0x3f3f3f3f #define MOD 1000000007 #define MAX_N 50005 using namespace std; int main() { //freopen("data.txt", "r", stdin); //freopen("data.out", "w", stdout); double a,b,c,d; char cc; scanf("%lf %lf",&a,&b); getchar(); scanf("%c",&cc); scanf("%lf %lf",&c,&d); if(cc==‘+‘){ if(b+d>0){ printf("%g+%gi",a+c,b+d); }else if(b+d<0){ printf("%g%gi",a+c,b+d); }else if(b+d==0){ printf("%g",a+c); } } if(cc==‘-‘){ if(b-d>0){ printf("%lf+%lfi",a-c,b-d); }else if(b-d<0){ printf("%lf%lfi",a-c,b-d); }else if(b-d==0){ printf("%lf",a-c); } } if(cc==‘*‘){ if(a*c-b*d==0&&a*d+b*c!=0){ printf("%gi",a*d+b*c); }else if(a*d+b*c==0&&a*c+b*d!=0){ printf("%g",a*c-b*d); }else{ if(a*d+b*c<0){ printf("%g%gi",a*c-b*d,a*d+b*c); }else{ printf("%g+%gi",a*c-b*d,a*d+b*c); } } } if(cc==‘/‘){ double shi=(a*c+b*d)/(c*c+d*d); double xu=(b*c-a*d)/(c*c+d*d); if(c==0&&d==0){ printf("error\n"); }else{ if(xu>0){ printf("%g+%gi",shi,xu); } if(xu==0){ printf("%g",shi); }else{ printf("%g%gi",shi,xu); } } } //fclose(stdin); //fclose(stdout); return 0; } // 3 3 * 3 3
以上是关于算法提高 6-17复数四则运算的主要内容,如果未能解决你的问题,请参考以下文章
算法笔记_156:算法提高 6-17复数四则运算(Java)