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

C言語 構造体 2

三つの構造体α、β、γの実数部、虚数部の値(実数)をそれぞれ入力し、 (α+γ)(γ+β)を求めて表示せよ。 ただし、複素数を、実数部と虚数部に対応するメンバで構成される構造体として表し、複素数の加算用関数c_add()と乗算用関数c_mul()を作成して、これを利用すること。 これらの関数は、sとtを複素数を表す構造体としたとき、c_add(s,t)、c_mul(s,t)と呼び出すと、それぞれ戻り値として、sとtを加算、または乗算した結果である複素数の構造体を返すものとする。 という問題なのですが。。。。 #include<stdio.h> int main(void){ struct complex{ double real; double imaginary; }; struct complex[3]; double real; double imag; printf("α= "); scanf("%d,&real); scanf(%d,&imag); printf("β= "); scanf("%d,&real); scanf(%d,&imag); printf("γ="); scanf("%d,&real); scanf(%d,&imag); (α+γ)=c_add(α,γ); (β+γ)=c_add(β,γ); (α+γ)(β+γ)=c_mul(α+γ,β+γ) result=(α+γ)(β+γ) printf("result= "); まで友達と考えてみたのですが、このあとどうしたらいいのかわかりません>< どなたかお教えください。。お願いします。。。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.5

>教えてもらう場所なのに、なんでせめられなきゃいけないんですか(;_;)??? 自助努力が足りないように見えるから…ではないですかね? 私の回答で「fgets()とかgetchar()とか」ってヒントもあるのですが……。 まぁ、これだけじゃちょっと足りなかったかも知れませんが。 「コンソール 閉じる」も追加すればよかったですかね。 「コンソール 閉じる getchar()」でソレっぽいページが見付かります。 # が、scanf()使っているとうまくいかない場合もあるようで……。 http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/d9e0c0aa-28fd-40eb-831a-f26e1ce4a63d/ こんなのも引っかかります。 # ただし、こちらはVSの場合なのでC++builderでは違うでしょうけど。 「コンソール 閉じる ブレークポイント」でもいくつかひっかかりますね。 やっぱりVSの方が多いようですが。 「コンソール 閉じる ブレークポイント C++builder」では…イマイチでしょうか。 C++builderでのデバッガの使い方を調べた方が効率良さそうです。

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

授業を 2か月受けたんでしょ? だとしたら, 授業中「プログラムの入力~コンパイル~実行」の方法も説明があっただろうし, 徹頭徹尾その方法と「全く同じ方法」を使えば「C++builderに入れたのですが、入力したあとWindowが閉じて、結果まで出ませんでした」なんてことにはならないんじゃないの?

minamiriira
質問者

補足

教えてもらう場所なのに、なんでせめられなきゃいけないんですか(;_;)??? できないものはできないんですよ(ToT) できないけど、できるようになりたいから質問してるのに。。。

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

>入力したあとWindowが閉じて、結果まで出ませんでした(;_;) プログラム終了したからコンソール閉じられただけでは? コマンドプロンプト開いて、そこから実行したらどうですか? main()の最後のreturnの行にブレークポイントを設定するとか… fgets()とかgetchar()とか……。

minamiriira
質問者

補足

ごめんなさい、よくわかりません(;_;) 授業で2ヶ月やっただけの素人なのでわかりません(;_;)ごめんなさい 初心者向けにお願いします(;_;)

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

先日、同じ質問に関するサンプルコードをアップした者です。 参考にはならなかったでしょうか。

minamiriira
質問者

補足

C++builderに入れたのですが、入力したあとWindowが閉じて、結果まで出ませんでした(;_;)

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

> struct complex{ この位置で定義すると、main 関数の中だけで有効な構造体になります。 関数c_add,c_mulでも使いたいのなら、main関数の外で定義します。 > struct complex[3]; やりたいことがわかりません。配列を用意したいのなら、 struct complex carray[3]; 等と配列名(この例ではcarray)が必要です。 個別変数を3つ用意したいのなら struct complex a,b,g; とか struct complex a; struct complex b; struct complex g; などと、3つの変数名(この例ではa,b,g)が必要です。 > scanf("%d,&real); scanfのマニュアルで変換書式の箇所をよく読んで理解してください。 書式と引数の型は一致させないと正しく読み込めません。 今は %dが int型を要求→対応する引数は &real : double *型 となっています。 それと、変数real、 imagに読み込んでますが、そのあと、α、β、γの相当する構造体に読み込んだ値を設定している箇所がありません。 > (α+γ)=c_add(α,γ); こんな書き方はC言語にはありません。 問題文では通常の数学的な表現でα、β、γを使用していますが、これらをC言語的な表現に置き換える必要があります。 例えば struct complex alpha_gamma ; /* α+γの保存用 */ alpha_gamma=c_add(α, γ); の様に。 ※ α,γ のままにしましたが、当然、これらも適切な書き方に変更します。 > printf("result= "); 構造体を都合よく出力してくれる変換書式はありません。内容を考えて、組合せる必要があります。 例えば、 printf("result=%f+(%f)i\n",result.real, result.imaginary); 1つ目の%f→result.realで実数部 2つ目の%f→result.imaginaryで虚数部 等

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

関連するQ&A