【题目描述】
完成下面程序,实现两个复数的四则运算。
r1为第一个操作数的实部,i1为第一个操作数的虚部,op为操作符,r2为第二个操作数的实部,i2为第二个操作数的虚部。
输出两个复数的运算结果。
如果op为'+' '-' '*' '/'以外的字符,输出:"error" 。op为'/',且r2,i2均为0时,输出:"Divisor cannot be 0"。(不带引号)
【输入格式】
一行,先是两个数表示第一个复数的实部和虚部,之后是一个字符表示操作符,最后再有两个数表示第二个复数的实部和虚部(中间均用空格分隔)
【输出格式】
按要求输出运算结果或者错误信息。 运算结果格式为 "a + bi" (不带引号) a,b 分别为结果复数的实部和虚部
【输入样例1】
3 5 + 7 8
【输出样例1】
10 + 13i
【输入样例2】
2 4 d 8 9
【输出样例2】
error
【输入样例3】
7 8 / 0 0
【输出样例3】
Divisor cannot be 0
【输入样例4】
7 5 * 4 6
【输出样例4】
-2 + 62i
【输入样例5】
5 6 / 2 3
【输出样例5】
2.15385 + -0.230769i
#include<iostream>
using namespace std;
int main(){
double r1,i1,r2,i2,t1,t2;
char op;
cin>>r1>>i1;
cin>>op;
cin>>r2>>i2;
if((int)op!=42&&(int)op!=43&&(int)op!=47&&(int)op!=45){
cout<<"error";
}else{
if((int)op==43){
r1=r1+r2;
i1=i1+i2;
cout<<r1<<" "<<"+"<<" "<<i1<<"i";
}else{
if((int)op==45){
r1=r1-r2;
i1=i1-i2;
cout<<r1<<" "<<"+"<<" "<<i1<<"i";
}else{
if((int)op==42){
t1=r1;
t2=i1;
i1=-(i1*i2);
r1=r1*r2+i1;
i1=t1*i2+t2*r2;
cout<<r1<<" "<<"+"<<" "<<i1<<"i";
}else{
if((int)op==47){
if(r2==0&&i2==0){
cout<<"Divisor cannot be 0";
}else{
if(r2==0){
r1=(i1/i2);
i1=-(r1/i2);
cout<<r1<<" "<<"+"<<" "<<i1<<"i";
}else{
if(i2==0){
r1=r1/r2;
i1=i1/r2;
cout<<r1<<" "<<"+"<<" "<<i1<<"i";
}else{
t1=r1;
r1=(r1*r2+i1*i2)/(r2*r2+i2*i2);
i1=(r2*i1-t1*i2)/(r2*r2+i2*i2);
cout<<r1<<" "<<"+"<<" "<<i1<<"i";
}
}
}
}
}
}
}
}
}