请我需要编写一个程序,从用户那里获取两个复数并输出它们的差。复数是 a+bi 形式的数字,其中 a 和 b 是实数,分别称为实部和虚部。因此,两个复数 a1+b1i 和 a2+b2i 之差为 (a1-a2)+(b1-b2)i。我把代码写成
#include<iostream>
using namespace std;
class cmp {
private:
double re, im;
public:
cmp(double a, double b) {re=a; im=b;}
friend cmp operator+(cmp&, cmp&);
void show() {cout<<re<<" + "<<im<<"i"<<endl;}
};
cmp operator+(cmp& p, cmp& q) {return cmp (p.re-q.re, p.im-q.im);}
main() {
double m1, n1, m2, n2;
cout<<"Give two complex numbers: "; cin>>m1>>n1; cout<<endl;
cout<<"Give another two complex numbers: "; cin>>m2>>n2; cout<<endl;
cmp c1(m1,n1);
cmp c2(m2,n2);
cmp c3=c1+c2;
c3.show();
system("PAUSE");
}
但是,当您查看差异 (a1-a2)+(b1-b2)i 时,如果
b2>b1,则差的虚部为负。例如 (10.5+2i)-(5+4i)=5.5-2i。但是,程序不能显示它,而是显示 5+-2i 。我的程序怎么可能是通常的数学格式?
a1=a2 和/或 b1=b2, 0 显示在程序中,这与数学中的常用格式不同。例如,在数学上,(4+7i)-(4+5i)=(4-4)+(7-5)i=2i。但是这个程序会显示 0+2i。我该如何解决这个问题?
请我需要一个关于如何克服这些的线索。谢谢。