C言語です。初めて使います。
文字数制限かかってしまうので返信にエラーコード貼ります!
状況説明です。大学の課題で、複素数を2つ入力しの四則演算を求めよと言う課題が出ました。
まず、複素数の和のソースコードを配られ、そこから拡張して作りなさいと言う物なんですけど、そもそもそのソースコードがエラーをはいて動かないです。写し間違えないように3.4回見直して、調べたらもしたのですがどうしても解決しません。
どこを直したら良いですか?
/* 複素数の和を求めるプログラム */ #include <stdio.h> #include "complex.h" int main (void) { complex u, v; puts("2つの複素数(u, v)を入力してください."); puts("u = "); u = comp_scan (); puts("v = "); v = comp_scan (); puts("\ n 入 力 結 果 を 示 し ま す . \n"); printf("u = "); comp_print(u, Orth); printf(" = "); comp_print(u, Polar); printf("v = "); comp_print(v, Orth); printf(" = "); comp_print(v, Polar); puts("\ n 演 算 結 果 を 示 し ま す . \n"); printf("u + v = "); comp_print(comp_add(u,v), Orth); printf(" = "); comp_print(comp_add(u,v), Polar); return (0); } /* *complex.h 複素数の演算を記述するプログラムヘッダ */ #include <stdio.h> /* 複素数を表す構造体 */ typedef struct { double real; double imag; } complex; /* 直行形式,極形式を表す列挙体 */ typedef enum {Orth, Polar} form; /* 複素数uとvの加算結果を返す関数 */ complex comp_add (complex u, complex v); /* 複素数uの絶対値を返す関数 */ double comp_abs (complex u); /* 複素数uの偏角を返す関数 */ double comp_arg (complex u); /* 読み込んだ複素数を返す関数 */ complex comp_scan (void); /* 読み込んだ複素数を返す関数 */ void comp_print (complex z, form f); /* * complex.c * * 複素数の演算を記述するプログラム */ #include <stdio.h> #include <math.h> /* コンパイルオプション -lm を付ける */ #include "complex.h" #define sqr(x) ((x) * (x)) /* xの2乗を求める関数形式マクロ */ /* 複素数uとvの加算結果を返す関数 */ complex comp_add (complex u, complex v) { complex w; w.real = u.real + v.real; w.imag = u.imag + v.imag; return (w); } /* 複素数uの絶対値を返す関数 */ double comp_abs (complex u) { return (sqrt(sqr(u.real) + sqr(u.imag))); } /* 複素数uの偏角を返す関数 */ double comp_arg (complex u) { return (atan2(u.imag, u.real)); } /* 読み込んだ複素数を返す関数 */ complex comp_scan (void) { complex z; printf("Re: "); scanf("%lf", &z.real); printf("Im: "); scanf("%lf", &z.imag); return (z); } /* 読み込んだ複素数を返す関数 */ void comp_print (complex z, form f) { switch(f) { case Orth : printf("%f+%fi\n", z.real, z.imag); break; case Polar : printf("%fexp(%fi)\n", comp_abs(z), comp_arg(z)); break; } }
回答2件
あなたの回答
tips
プレビュー