1

重複の可能性:
Cで複素数を処理する方法は?

したがって、「complex」は型に名前を付けていないというエラーでコンパイルされるこのCコードがあります。

#include <stdio.h>
#include <complex.h>
#include <math.h>

int main ()
{
    int B=9;
    double theta;

    double complex w;
    float x,y;

    x= 5*cos (theta) - 2;
    y= 5*sin (theta);


    double complex z=x+y*I;
    w=z+(B/z);

    for(theta=0;theta<=360;theta=+30)
    { printf ("%.2f  %.2f  %.2f  %.2f",creal(z), cimag(z),y,creal(w), cimag(w));
        printf ("/n");
    } 

    return 0;

    system ("pause");
}

私はすでに含めている<complex.h>ので、なぜ「複合体」のエラーがまだあるのですか。他にもエラーがありますが、最初にこれに焦点を当てましょう。

4

2 に答える 2

4

コンパイラとしてGCCを使用していますか?-std=c99はいの場合、または-std=gnu99コンパイラフラグを使用してC99サポートを有効にする必要があります。

また、使用する前に変数を宣言してください。ここ:

double complex z=x+y*I;

まだ宣言されていませんxyもちろん、それらも初期化する必要があります。例えば:

float x = 5 * cos(theta) - 2;
float y = 5 * sin(theta);
double complex z = x + y * I;
于 2012-11-28T16:29:24.187 に答える
1

これはうまくいくはずです:

#include <stdio.h>
#include <complex.h>
#include <math.h>
int main ()

{
 int B=9;
 double theta;
 double complex w;
 float x = 5*cos (theta) - 2;
 float y = 5*sin (theta);
 double complex z=x+y*I;

 w=z+(B/z);

 for(theta=0;theta<=360;theta=+30)
  { printf ("%.2f  %.2f  %.2f  %.2f",creal(z), cimag(z),y,creal(w), cimag(w));
   printf ("/n");
  } 

  return 0;
 }
于 2012-11-28T16:35:13.320 に答える