C++というプログラム言語の中にcomplex関数があります。これは複素数を意味する関数と自分では感じています。そして自分の理想に近いコードを書いている途中なのですが途中でエラーが出てきてしまいました。このエラーを解消していただきたいです。どうやら下から5行目のz= c_arg(z);にエラーが発生しているようです。よろしくお願いします。
c++
1#include <stdio.h> /* {\tt sprintf()} */ 2#include <math.h> 3 4typedef struct { double re, im; } complex; /* 複素数型 */ 5 6complex c_conv(double x, double y) /* $x$, $y$ を複素数 $z = x + iy$ に変換 */ 7{ 8 complex z; 9 10 z.re = x; z.im = y; 11 return z; 12} 13 14char *c_string(complex z) /* 複素数 $z = x + iy$ を文字列に変換 */ 15{ 16 static char s[40]; 17 18 sprintf(s, "%g%+gi", z.re, z.im); 19 return s; 20} 21 22complex c_conj(complex z) /* 共役複素数 $\overline{z}$ */ 23{ 24 z.im = - z.im; 25 return z; 26} 27 28double c_abs(complex z) /* 絶対値 $|z|$ */ 29{ 30 double t; 31 32 if (z.re == 0) return fabs(z.im); 33 if (z.im == 0) return fabs(z.re); 34 if (fabs(z.im) > fabs(z.re)) { 35 t = z.re / z.im; 36 return fabs(z.im) * sqrt(1 + t * t); 37 } else { 38 t = z.im / z.re; 39 return fabs(z.re) * sqrt(1 + t * t); 40 } 41} 42 43double c_arg(complex z) /* 偏角 ($-\pi \le \varphi \le \pi$) */ 44{ 45 return atan2(z.im, z.re); 46} 47 48 49#include <stdlib.h> 50 51int main(void) 52{ 53 double x, y; 54 complex z; 55 56 printf("x, y ? "); scanf("%lf%lf", &x, &y); 57 z = c_conv(x, y); 58 printf("z = %s\n", c_string(z)); 59 60 z=c_conj(z); 61 printf("c_conj(z)=%s\n",c_string(z)); 62 63 z= c_arg(z); 64 printf("c_arg(z)=%s\n",c_string(z)); 65 66 return 0; 67}
errorcode
1error C2440: '=': 'double' から '_complex' に変換できません。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10244163590
以下ご対応ください。
https://teratail.com/help#posted-otherservice