ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

社情の絆〜情報処理編〜コミュの<解答>課題8

  • mixiチェック
  • このエントリーをはてなブックマークに追加
中村です。

In message "[I-P 437] 情報処理:課題8",
Takashi NAKAMURA wrote...
> [課題8] 構造体と関数(出題担当:中村)
>
>  三つの複素数 α、β、γの実数部、虚数部の値(実数)をそれぞれ入力
> し、
>    (α+γ)(β+γ)
> を求めて表示せよ。
>
>  ただし、複素数を、実数部と虚数部に対応するメンバで構成される構造体
> として表し、複素数の加算用関数c_add()と乗算用関数c_mul()を作成して、
> これを利用すること。

 この問題は、講義の時に配布した例題とほぼ同様の形で関数を作成すれば
よいので、あの例題を理解していれば、特に難しいことはないと思います。

 結果の表示に関して、
  実数部or虚数部がゼロの場合
  虚数部が負の場合
を考慮するようにすれば、より美しくなりますが、以下の解答例は、それら
に関しては特に何もしていません。

--
#include <stdio.h>
#include <conio.h>

typedef struct{
double real, imag;
} complex;

complex c_add(complex, complex);
complex c_mul(complex, complex);
void get_complex(char *, complex *);

int main(void){
complex a, b, c, z;

get_complex("αの実部 虚部 =", &a);
get_complex("βの実部 虚部 =", &b);
get_complex("γの実部 虚部 =", &c);
z = c_mul(c_add(a, c), c_add(b, c));
printf("(α+γ)(β+γ)= %.3f + %.3fi\n", z.real, z.imag);
getch();
return 0;
}
complex c_add(complex x, complex y){
complex w;
w.real = x.real + y.real;
w.imag = x.imag + y.imag;
return w;
}

complex c_mul(complex x, complex y){
complex w;
w.real = x.real * y.real - x.imag * y.imag;
w.imag = x.imag * y.real + x.real * y.imag;
return w;
}

void get_complex(char *ch, complex *v){
printf(ch);
scanf("%lf%lf", &v->real, &v->imag);
}
// 似たようなscanfを3回書くのは面倒なので、入力部分も関数にしてみ
//ました。


コメント(0)

mixiユーザー
ログインしてコメントしよう!

社情の絆〜情報処理編〜 更新情報

社情の絆〜情報処理編〜のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング