C++类用于使用复数相乘并返回两个值
C++ class for use complex numbers multiplication and return two values
我的用于复数的类开关有问题。我想把两个复数相乘,并返回两个值(re,im)。我使用重载运算符,但我不知道如何返回两个值。我想用这个公式(a1 + b1i) ∗ (a2 + b2i) = (a1a2 − b1b2 + (a1b2 +a2b1)i)
。我要退货。
这是我的代码:
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;
除了这个结果,我很喜欢:
0 3 7+2i 1.5-3.2i
0.363472-0.698001i (0.786967,-1.0907)
1-3.5i
另一个问题是,如何从ostream& printPolar(ostream&) const
中检索两个值Q,r
?
Complex operator * (const Complex &b) const {
Complex result(
realteil * b.realteil - imaginearteil*b.imaginearteil, // real part
realteil * b.imaginearteil + b.realteil * imaginearteil // img part
);
return result;
}
我省略了"this->"运算符的显式使用。
相关文章:
- 如何返回一个类的两个对象相加的结果
- 返回两个向量 – 使用引用还是元组?
- 函数返回两个字符串的第一个常用字符
- C++函数返回两个 char 数组的相同索引元素
- 为什么同一个逻辑方程在python和c++中返回两个不同的结果
- 给定一个偶数(大于2),返回两个素数,其总和等于给定数
- 在C 中返回两个值对
- 在 C++ 中创建动态数组并返回两个值
- 在C++中返回两个字符串
- C++ 在数组中返回两个值
- 用移动语义返回两个对象
- Bit hack根据第二个值返回两个值中的一个
- 如何在C++中从函数返回两个值
- 返回两个用户输入值的函数
- 从c++中的一个函数返回两个值
- 我的C++DLL返回两个顺序调用混合的数据
- 如何使用boost元组返回两个向量
- 如何从lua函数返回两个或多个表
- 在c++函数中返回两个变量
- C++类用于使用复数相乘并返回两个值