0
我有一個用於複雜數字的類女巫的問題。我想乘兩個複數,我想返回兩個值(重新,即時)。我使用重載操作符,但我不知道如何返回兩個值。我很想用這個公式(a1 + b1i) ∗ (a2 + b2i) = (a1a2 − b1b2 + (a1b2 +a2b1)i)
。我想要返回re + im。C++類使用複數乘法和返回兩個值
這是我的代碼:
class Complex{
private:
double realteil;
double imaginearteil;
public:
Complex(){
imaginearteil=0;
realteil=0;
}
Complex(double real): realteil(real){
imaginearteil = 0;
}
Complex(double real, double imaginear){
this -> realteil = real;
this -> imaginearteil = imaginear;
}
double abs() const{
double result = this -> realteil * this -> realteil + this -> imaginearteil * this -> imaginearteil;
result = pow(result,0.5);
return result;
}
Complex konjugiert() const{
Complex result;
result.realteil = this -> realteil;
result.imaginearteil = this -> imaginearteil - 2*imaginearteil;
return result;
}
Complex operator + (const Complex &c){
Complex result;
result.realteil = this -> realteil + c.realteil;
result.imaginearteil = this -> imaginearteil + c.imaginearteil;
return result;
}
Complex operator - (const Complex &c){
Complex result;
result.realteil = this -> realteil - c.realteil;
result.imaginearteil = this -> imaginearteil - c.imaginearteil;
return result;
}
Complex operator * (const Complex &b){
return ((this -> realteil * b.realteil) - (this -> imaginearteil * b.imaginearteil))
- ((this -> realteil * b.imaginearteil) + (b.realteil * this -> imaginearteil));
}
Complex operator/(const Complex &b){ }
ostream& printPolar(ostream&) const{
double temp = realteil*realteil + imaginearteil*imaginearteil;
double r = pow(temp,0.5);
double Q;
if(r == 0){
Q=0;
}
if(imaginearteil >=0) {
Q = acos(realteil/r);
}
if(imaginearteil < 0){
Q = -acos(realteil/r);
}
}
friend ostream& operator << (ostream& output, const Complex& a);
};
ostream& operator << (ostream& output, const Complex& a){
if(a.imaginearteil == 0)
output << a.realteil;
if(a.imaginearteil < 0)
output << a.realteil <<a.imaginearteil<<"i";
if(a.imaginearteil > 0)
output << a.realteil <<"+" <<a.imaginearteil<<"i";
return output;
}
int main() {
Complex a,b(3),c(7,2),d(1.5,-3.2);
cout <<c<<endl;
cout <<c.konjugiert();
a = c*d;
cout << a;
//cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
// Complex x=(b+2)*(c-d.abs())/(b-c.konjugiert()*d);
return 0;
}
我想在main()
Complex a,b(3),c(7,2),d(1.5,-3.2);
cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
Complex x=(b+2)*(c-d.abs())/(b-c.konjugiert()*d);
cout<<x<<" ";
x.printPolar(cout);
cout<<endl;
我woudl類似,只是這個結果做到這一點:
0 3 7+2i 1.5-3.2i
0.363472-0.698001i (0.786967,-1.0907)
1-3.5i
另一個問題,如何retrun 2值Q,r
從ostream& printPolar(ostream&) const
?
你已經在'operator +'和'operator-'中做了這個。 –
以及如何使用此屬性?我編輯我的問題,並把結果。 – lukassz
它應該返回'Complex',是嗎?但是如果你堅持,你可以使用'std :: tie'。 – Mine