質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

962閲覧

構造体を用いて複素数の掛け算を表したいです。

sawayakaunagi

総合スコア17

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/11/22 04:19

構造体を用いて、複素数の掛け算を表したいのですが、うまくいきません。初学者で、教科書などを見てもよくわかりませんでした。どのようにすればうまく表せるか教えていただけないでしょうか?

c

1コード 2#include <stdio.h> 3#include <math.h> 4 5typedef struct 6{ 7 double re, im; 8} Complex; 9 10Complex Complex_create( double re, double im ) 11{ 12 Complex z1; 13 z1.re = re; 14 z1.im = im; 15 return z1; 16 Complex z2; 17 z2.re = re; 18 z2.im = im; 19 return z2; 20} 21 22double Complex_mul( Complex * z1, Complex * z2 ) 23{ 24 double re3 = z1->re * z2->re - z2->im * z2->im; 25 double im3 = z1->im * z1->re + z1->re * z2->im; 26 return re3; 27 return im3; 28} 29 30int main() 31{ 32 double a1, b1; 33 double a2, b2; 34 Complex z1 = Complex_create( a1,b1); 35 Complex z2 = Complex_create( a2,b2); 36 printf("複素数の掛け算は%lf + %lfiです。\n", Complex_mul(re3),Complex_mul(im3)); 37 38 return 0; 39}

c

1実行結果 2 35 | printf("複素数の掛け算は%lf + %lfiです。\n", Complex_mul(re3),Complex_mul(im3)); 3 | ^~~~~~~~~~~ 4ensyuu6-2.c:21:8: note: declared here 5 21 | double Complex_mul( Complex * z1, Complex * z2 ) 6 | ^~~~~~~~~~~ 7ensyuu6-2.c:35:90: error: ‘im3’ undeclared (first use in this function) 8 35 | printf("複素数の掛け算は%lf + %lfiです。\n", Complex_mul(re3),Complex_mul(im3)); 9 | ^~~ 10ensyuu6-2.c:35:78: error: too few arguments to function ‘Complex_mul’ 11 35 | printf("複素数の掛け算は%lf + %lfiです。\n", Complex_mul(re3),Complex_mul(im3)); 12 | ^~~~~~~~~~~ 13ensyuu6-2.c:21:8: note: declared here 14 21 | double Complex_mul( Complex * z1, Complex * z2 )

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2021/11/22 04:28

複素数がどうのこうのより先に C言語の入門レベルの学習をしましょう。
guest

回答2

0

  • 複素数同士の掛け算なので結果は当然複素数であるべきです。しかしComplex_mulの返り値の型はdoubleになっています。おかしいです。

  • Complex_mulはComplex型の引数を2つ取るように書いてありますが、実際に使おうとしているところ(printf内)では1つしか渡していません。

  • Complex_mulに渡そうとしているre3,im3という変数は定義されていません。

  • Complex_create関数内でreturn z1;より後は実行されません。

  • Complex_mul関数も同様に、決して実行されないreturn文があります。

  • main関数冒頭で、a1,b1,a2,b2を宣言していますが、値を入れていません。

投稿2021/11/22 04:25

編集2021/11/22 04:36
ozwk

総合スコア13553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

実行結果

それは実行結果では無くコンパイル結果でしょう。
両者は区別して頂かないと、お互いの理解が食い違ってしまいますのでご注意ください。

「宣言を見て(確認して)ください」と言われています。
Complex_mul 関数は引数が 2 つ必要なのに、1 つしか書いていないためと思われます。

ご質問の内容と少しずれますが、Complex_create 関数や Complex_mul 関数の中身は変です。
return 文を 2 つ書いても値を 2 つ返せるわけではありません。

「c 複素数 構造体」といったキーワードで検索してみては如何でしょうか。

投稿2021/11/22 04:29

編集2021/11/22 04:35
jimbe

総合スコア13209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問