在c++中将已定义的结构转换为双精度(复数)



我试图找到定义结构的方法,并将其编码为定义复数。我已经成功地使用了它们,添加了乘法,例如,但我不知道如何将复数的绝对值转换为双精度,我的编译器一直告诉我它不知道如何转换它,尽管复杂结构实际上是由2个双精度组成的。。

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
struct Complex_Number { 
double re, im;      
};
void print(const Complex_Number& w) //my print function for complex numbers
{
cout  << '(' << w.re << " + i*" << w.im << ')';
}
double abs(const Complex_Number& z )
{
z = z.re + z.im;
abs = sqrt((z.re*z.re)+(z.im*z.im)); 
return abs;
}


int main()
{
return 0;


}

我不知道你打算用z = z.re + z.im做什么;第二部分只需要分配给一个变量或直接返回即可。所以写。。。

double abs(const Complex_Number& z ) {
double ret = sqrt((z.re*z.re)+(z.im*z.im)); 
return ret;
}

double abs(const Complex_Number& z ) {
return sqrt((z.re*z.re)+(z.im*z.im)); 
}

为代码中的"函数名"(即abs = sqrt((z.re*z.re)+(z.im*z.im))(赋值是无效的C++代码。

最新更新