C言語 構造体と関数 三つの複素数α、β、γの実数部、虚数部の値(実数)をそれぞれ入力して、 (α+γ)(β+γ) を求めて表示せよ。 という問題ですが、

C言語 構造体と関数 三つの複素数α、β、γの実数部、虚数部の値(実数)をそれぞれ入力して、 (α+γ)(β+γ) を求めて表示せよ。 という問題ですが、 #include〈stdio. h〉 #include 〈string. h〉 int main void{ struct vector{ double α; double β; double γ; }; このあと、実数部と虚数部はわけて入力する式を作るのでしょうか? c_ add()、c_mul()を使うのですが、よくわかりません(*_*) sとtを複素数を表す構造体としたとき、c_ add(s、t)、c_mul(s、t)と呼び出すと、それぞれ戻り値として、sとtを加算またはsとtを乗算した結果である複素数の構造体を返す、というのはどういうことでしょうか?

C言語関連400閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

このベストアンサーは投票で選ばれました

0

/* 0706_152609構造体と関数.c minamiriiraさん C言語_構造体と関数 三つの複素数α、β、γの実数部、虚数部の値(実数)を それぞれ入力して、 (α+γ)(β+γ)を求めて表示せよ。 sとtを複素数を表す構造体としたとき、c__add(s、t)、c_mul(s、t)と呼び出すと、それぞれ戻り値として、sとtを加算またはsとtを乗算した結果である複素数の構造体を返す、というのはどういうことでしょうか? >>>> それなら、こういうことでしょう。 */ #define__CRT_SECURE_NO_WARNINGS___//_permit_scanf() #include_<stdio.h> typedef_struct_cmp{_//_複素数構造体 __double__x;__//_実数部 __double__y;__//_虚数部 }_CMPLX; CMPLX_cadd(CMPLX_a,CMPLX_b){ __CMPLX___c;__//_a+b __c.x_=_a.x+b.x; __c.y_=_a.y+b.y; __return_c; } CMPLX_cmul(CMPLX_a,CMPLX_b){ __CMPLX___c;__//_a*b __c.x_=_a.x*b.x-a.y*b.y; __c.y_=_a.x*b.y+a.y*b.x; __return_c; } int_main(void){ __CMPLX___alf,bet,gam;__//_複素数α,β,γ __CMPLX___dlt;__________//_(α+γ)(β+γ) __printf("α.x_α.y_=_");_scanf("%lf%lf",&alf.x,&alf.y); __printf("β.x_β.y_=_");_scanf("%lf%lf",&bet.x,&bet.y); __printf("γ.x_γ.y_=_");_scanf("%lf%lf",&gam.x,&gam.y); __printf("参考:\n"); __printf("(α+γ)_=_(%f,%f)\n",cadd(alf,gam)); __printf("(β+γ)_=_(%f,%f)\n",cadd(bet,gam)); __printf("結果:\n"); __dlt_=_cmul(cadd(alf,gam),cadd(bet,gam)); __printf("(α+γ)(β+γ)_=_(%f,%f)\n",dlt.x,dlt.y); __return_0; } /*_出力例: α.x_α.y_=_1_2 β.x_β.y_=_2_1 γ.x_γ.y_=_1_1 参考: (α+γ)_=_(2.000000,3.000000) (β+γ)_=_(3.000000,2.000000) 結果: (α+γ)(β+γ)_=_(0.000000,13.000000) */

その他の回答(1件)

0

正しくはこんな感じ。 関数で定義? 何故そんなめんどくさいことをしなくてはいけないのか? オペレータを定義する方が賢い。 #include<stdio.h> struct comp{ double a,bi; comp operator+(const comp& c){ comp re; re.a =a+c.a; re.bi=bi+c.bi; return re; } comp operator*(const comp& c){ comp re; re.a=a*c.a-bi*c.bi; re.bi=bi*c.a+a*c.bi; return re; } }; int main(){ comp c1,c2,c3; scanf("%lf %lf %lf %lf %lf %lf",&c1.a,&c1.bi,&c2.a,&c2.bi,&c3.a,&c3.bi); c3=(c1+c3)*(c2+c3); printf("%lf %lf\n",c3.a,c3.bi); }