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

構造体を関数に渡して複素数を加算するC++プログラムの書き方

複素数とは

複素数とは、a+bi の形式で表される数のことです。ここで i は虚数単位、ab は実数を表します。複素数の具体例は以下の通りです。

2+5i
3-9i
8+2i

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

本記事では、C++の構造体を使って複素数を表現し、それを関数に渡して加算する方法を解説します。

サンプルプログラム

以下は、構造体を関数に渡すことで複素数の加算を行うC++プログラムの完全なコードです。

#include <iostream>

using namespace std;
typedef struct complexNumber {
    float real;
    float imag;
};
complexNumber addCN(complexNumber num1, complexNumber num2) {
    complexNumber temp;
    temp.real = num1.real + num2.real;
    temp.imag = num1.imag + num2.imag;
    return(temp);
}
int main() {
    complexNumber num1, num2, sum;
    cout << "Enter real part of Complex Number 1: " << endl;
    cin >> num1.real;
    cout << "Enter imaginary part of Complex Number 1: " << endl;
    cin >> num1.imag;
    cout << "Enter real part of Complex Number 2: " << endl;
    cin >> num2.real;
    cout << "Enter imaginary part of Complex Number 2: " << endl;
    cin >> num2.imag;
    sum = addCN(num1, num2);
    if(sum.imag >= 0)
        cout << "Sum of the two complex numbers is " << sum.real << " + " << sum.imag << "i";
    else
        cout << "Sum of the two complex numbers is " << sum.real << " + (" << sum.imag << ")i";
    return 0;
}

実行結果

上記プログラムを実行すると、以下のような出力が得られます。

Enter real part of Complex Number 1: 5
Enter imaginary part of Complex Number 1: -9
Enter real part of Complex Number 2: 3
Enter imaginary part of Complex Number 2: 6
Sum of the two complex numbers is 8 + (-3)i

この例では、5-9i3+6i を加算し、結果として 8-3i が表示されています。実部は 5+3=8、虚部は -9+6=-3 と正しく計算されていることがわかります。

プログラムの解説

1. 複素数を表す構造体の定義

まず、複素数の実部(real)と虚部(imag)を保持するための構造体 complexNumber を定義します。float型のメンバー変数を2つ持ちます。

struct complexNumber {
    float real;
    float imag;
};

2. 加算を行う関数 addCN()

関数 addCN() は、complexNumber型の引数を2つ受け取り、それぞれの実部と虚部を加算します。計算結果は一時的な構造体 temp に格納され、呼び出し元の main() 関数へ返されます。

complexNumber addCN(complexNumber num1, complexNumber num2) {
    complexNumber temp;
    temp.real = num1.real + num2.real;
    temp.imag = num1.imag + num2.imag;
    return(temp);
}

3. main()関数での入力処理

main() 関数では、cin を使ってユーザーから2つの複素数の実部と虚部をそれぞれ入力してもらいます。

cout << "Enter real part of Complex Number 1: " << endl;
cin >> num1.real;
cout << "Enter imaginary part of Complex Number 1: " << endl;
cin >> num1.imag;

cout << "Enter real part of Complex Number 2: " << endl;
cin >> num2.real;
cout << "Enter imaginary part of Complex Number 2: " << endl;
cin >> num2.imag;

4. 加算結果の表示

addCN() 関数を呼び出して2つの複素数の和を求め、その結果を出力します。虚部が負の場合は「+(-3)i」のように括弧付きで表示することで、数式として読みやすくしています。

sum = addCN(num1, num2);
if(sum.imag >= 0)
    cout << "Sum of the two complex numbers is " << sum.real << " + " << sum.imag << "i";
else
    cout << "Sum of the two complex numbers is " << sum.real << " + (" << sum.imag << ")i";

まとめ

このように、C++では構造体を使って複素数を実部と虚部のペアとして表現し、関数に渡すことで簡潔に加算処理を実装できます。なお、C++では標準ライブラリの std::complex を使えば、より簡単に複素数の演算を行うことも可能です。構造体の使い方を学ぶ練習として、ぜひ本サンプルを参考にしてみてください。

  1. C++プログラムの基本構造を徹底解説!Hello Worldで学ぶ入門

    C++プログラムの基本構造とは プログラミング言語を効率よく習得する最良の方法は、実際にプログラムを書いてみることです。初心者が最初に書くプログラムとして定番なのが、「Hello World」という文字列を画面に表示するだけのシンプルなプログラムです。ごく簡単な内容ですが、C++プログラムに必要な基本的な構成要素がすべて詰まっています。それでは、さっそくコードを見てみましょう。 #include<iostream> int main() {     std::cout << Hello World\n; } ここからは、このプログ

  2. 【Java入門】2つの複素数を加算するプログラムの作り方を解説

    この記事では、Javaを使って2つの複素数を加算する方法を解説します。複素数は「i」で表される虚部を持つ数値のため、実部と虚部をそれぞれ別々に計理する必要があります。 複素数の加算の基本 複素数は一般的に「a + bi」という形で表されます。ここで「a」が実部、「b」が虚部です。2つの複素数を足し合わせる場合は、以下のように実部同士・虚部同士をそれぞれ加算します。 (a + bi) + (c + di) = (a + c) + (b + d)i 入力と出力の例 入力: 15 + i24 と 3 + i7 出力: 18 + i31 アルゴリズム ステップ1:開始 ステップ2:3つの複素数(my_