Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • 締切済み

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を乗算した結果である複素数の構造体を返す、というのはどういうことでしょうか?

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

complex.h 使えばいいような.

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6291)
回答No.3

ていうか、 >実数部と虚数部の解をそれぞれ入力は、解の公式を使うのですよね? ここは意味不明ですね。 「解をそれぞれ入力」? →解って、計算した「結果」のことじゃないんですか?「入力」ではなくて。 「解の公式」? →どこに登場するのでしょうか?

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6291)
回答No.2

適当に改変してください。 #include <stdio.h> #include <math.h> typedef struct { double re; double im; } Complex; Complex input(char *c) { Complex z; printf("%sの実部:", c), scanf("%lf", &z.re); printf("%sの虚部:", c), scanf("%lf", &z.im); return z; } Complex c_add(Complex z1, Complex z2) { Complex z; z.re = z1.re + z2.re; z.im = z1.im + z2.im; return z; } Complex c_mul(Complex z1, Complex z2) { Complex z; z.re = z1.re * z2.re - z1.im * z2.im; z.im = z1.re * z2.im + z1.im * z2.re; return z; } int main(void) { Complex alpha, beta, gamma, ans; alpha = input("α"); beta = input("β"); gamma = input("γ"); ans = c_mul(c_add(alpha, gamma), c_add(beta, gamma)); printf("(α+γ)(β+γ)="); printf("%f%s%fi\n", ans.re, (ans.im >= 0) ? "+" : "-", fabs(ans.im)); return 0; }

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

なんというか…ツッコミどころが…… >#include〈stdio. h〉 >#include 〈string. h〉 <stdio.h> <string.h> でしょう。 ヘンに全角混ぜるのは誤解の元です。 # ソースファイルに全角で記述していた場合はコンパイルでコケますよ。 >int main void{ こんな記述通るのでしょうか? int main(void) { とかではないですか? >struct vector{ C++だとエラーになったりしませんかね? まぁ、今回はC言語なので大丈夫かも知れませんが…… # ネームスペースとかあるから大丈夫なのかぁ…。 >double α; >double β; >double γ; 変数名に全角文字は使えないかと……。 # 全角というか…ASCII以外…かな。 >このあと、実数部と虚数部はわけて入力する式を作るのでしょうか? どこかで変数に値を設定する必要はあるでしょう。 >また、sとtを複素数を表す構造体としたとき、c_ add(s、t)、c_mul(s、t)と呼び出すと、それぞれ戻り値として、sとtを加算またはsとtを乗算した結果である複素数の構造体を返す、というのはどういうことでしょうか? struct vector c_add(struct vector s, struct vector t) {  struct vector Result;  構造体sと構造体tの加算を行い、構造体Resultに設定  return Result; } みたいな感じでしょう。 # 返却値を一時的に入れる構造体を用意しなくても可能だったりすることもあるかも知れませんが。

minamiriira
質問者

補足

丁寧な回答ありがとうございます(>_<) すみません(*_*) 携帯で打ったので、ぐちゃぐちゃになっちゃいました~(>_<) ちゃんと理解してるのでそこはスルーしてください(>_<) 実数部と虚数部の解をそれぞれ入力は、解の公式を使うのですよね? どのように書けばいいでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A