Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で2つの複素数を加算するプログラムを作成する方法

問題

実行時にユーザーが入力した2つの複素数を、C言語のプログラムを使って加算するにはどうすればよいのでしょうか。

解決策

複素数とは、実部と虚部を組み合わせた数のことです。一般的に「a+ib」という形式で表されます。ここで、aが実部、bが虚部、iは虚数単位(i² = -1)を表します。

2つの複素数を加算する場合、実部同士と虚部同士をそれぞれ足し合わせます。つまり、(a+ib) + (c+id) = (a+c) + i(b+d) という計算になります。

プログラム

例として、(4+2i) と (5+3i) という2つの複素数を考えてみましょう。この2つの複素数を加算すると、結果は 9+5i となります。

以下のプログラムでは、構造体(struct)を使って複素数の実部と虚部を管理し、ユーザーからの入力を受け取って加算処理を行います。

#include <stdio.h>

struct complexNumber {
    int realnumber, imaginarynumber;  // 実部と虚部
};

int main() {
    struct complexNumber x, y, z;

    printf("1つ目の複素数(実部と虚部)を入力してください\n");
    scanf("%d%d", &x.realnumber, &x.imaginarynumber);

    printf("2つ目の複素数(実部と虚部)を入力してください\n");
    scanf("%d%d", &y.realnumber, &y.imaginarynumber);

    // 実部同士・虚部同士をそれぞれ加算
    z.realnumber = x.realnumber + y.realnumber;
    z.imaginarynumber = x.imaginarynumber + y.imaginarynumber;

    printf("複素数の和: (%d) + (%di)\n", z.realnumber, z.imaginarynumber);

    return 0;
}

プログラムのポイント

  • 構造体の定義: complexNumber 構造体で、実部(realnumber)と虚部(imaginarynumber)を int 型のメンバとして定義しています。
  • 入力処理: scanf 関数を使って、ユーザーから実部と虚部の値をそれぞれ読み込みます。
  • 加算処理: 実部は実部同士、虚部は虚部同士を個別に加算します。

出力結果

1つ目の複素数(実部と虚部)を入力してください。
2 3
2つ目の複素数(実部と虚部)を入力してください。
4 5
複素数の和: (6) + (8i)

このように、構造体を活用することで、複素数を実部と虚部のペアとしてわかりやすく扱うことができます。応用として、減算や乗算などの演算も同じ考え方で実装できますので、ぜひ試してみてください。

  1. 【C言語】strncmpライブラリ関数を使って2つの文字列を比較するプログラムの作り方

    strncmpは、C言語のヘッダーファイル「string.h」に定義されている標準ライブラリ関数の一つです。この関数を使用すると、2つの文字列を比較し、どちらの文字列が大きい(辞書順で後ろにある)のかを判定することができます。 strcmp関数(文字列比較) strcmp関数は、2つの文字列を比較するための関数です。戻り値として、両方の文字列の中で最初に一致しなかった文字同士のASCIIコードの差を返します。 構文 int strcmp(string1, string2); 差が0の場合:string1 = string2(2つの文字列は等しい) 差が正の値の場合:string1 &

  2. Pythonで2つの数値を加算するプログラム:ビット演算による実装方法

    この記事では、2つの数値を加算するという問題に対する解法とアプローチについて詳しく解説します。 問題の概要 2つの大きな数値が与えられ、それらを加算した結果を出力することが求められます。 最も単純なアプローチは、オペランド同士を「+」演算子で結ぶ方法です。また、2つの数値をリストなどのイテラブルに格納し、Python標準ライブラリに用意されている組み込み関数 sum() を利用する方法もあります。 しかし、これらのアプローチでは10進数に対して直接演算を行うため、計算コストが増大するという課題があります。 ビット演算を用いた別のアプローチ そこで次に、数値をビット単位で操作する別のアプローチを