请我需要编写一个程序,该程序需要用户输入两个复数并输出它们的差。复数是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时,如果
请我提供有关如何克服这些困难的线索。谢谢。
最佳答案
您只需要对这些特殊情况进行show()
方法测试,并进行明确处理即可。
+
)。 +
。 没有捷径可走。只需在其中放置一些
if
语句即可。(我假设您这样做是出于教育目的,但如果不是,则应注意complex numbers are part of the C++ standard library。)
关于c++ - 如何使用负值或零值格式化复数输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16099027/