前提・実現したいこと
参照呼びした変数をif文の中で用いているのですが、上手くいきません。
発生している問題・エラーメッセージ
以下のソースコードを実行すると、 2組の複素数a,bを入力してください。 a=9+9i b=-9-9i a / b = -1.000 +0.000i となってしまいます。 ソースコードは出力が a / b = -1.000 となるように書いているつもりです。
該当のソースコード
ソースコード #include<stdio.h> #include<stdlib.h> #include<math.h> void xy_rt(double x,double y,double *pr,double *r_pt){ *pr =sqrt(x*x+y*y); *r_pt=atan2(y,x); } int division(double x1,double y1, double x2, double y2, double *pre, double *pim){ double r1,r2,t1,t2,r_t1,r_t2; xy_rt(x1,y1,&r1,&r_t1); xy_rt(x2,y2,&r2,&r_t2); *pre=(r1/r2)*cos(r_t1-r_t2); *pim=(r1/r2)*sin(r_t1-r_t2); } typedef struct{ double re, im; } st_complex; int main(){ st_complex a,b,c; printf("2組の複素数a,bを入力してください。\n"); int i; char t1,t2,t3,t4; printf("a="); scanf("%lf%lf%c",&a.re,&a.im,&t1); printf("b="); scanf("%lf%lf%c",&b.re,&b.im,&t2); division(a.re,a.im,b.re,b.im,&c.re,&c.im); __if(c.im!=0 && c.re==0){ printf("a / b = %8.3fi\n",c.im); }else if(c.im==0){ printf("a / b =%8.3f\n",c.re); }else { printf("a / b =%8.3f%+8.3fi\n",c.re,c.im); }____ return 0; }
試したこと
a=9+9i
b=9+9i
a / b = 1.000
この値では上手くいきました。
a=9+9i
b=-9+9i
a / b = 0.000 -1.000i
実数部分が0の場合も上手くいきませんでした。
Windows10 ubuntuを使っています。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/10 04:28 編集