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

时间:2018-11-11 19:39:31

标签: c++ struct double complex-numbers

我试图找到定义结构的方法,并对其进行编码以定义一个复数。我已经成功地使用了它们,例如添加了乘法,但是我不知道如何将我的复数的绝对值转换为双精度数,我的编译器不断告诉我它不知道如何转换它,即使复杂的结构是字面意思是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;




}

1 个答案:

答案 0 :(得分:1)

我不知道您对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 ++代码。