Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 복소수 다루기: 구조체와 연산자 오버로딩으로 구현하기

C#에서 복소수를 다루고 화면에 출력하려면 실수부(real)허수부(imaginary)를 각각 확인하고 관리해야 합니다.

복소수의 기본 개념

예를 들어 7+5i 같은 복소수는 두 부분으로 구성됩니다. 하나는 실수부인 7이고, 다른 하나는 허수부인 5입니다. 여기서 허수부는 허수 단위 i의 배수 형태로 표현됩니다.

Complex 구조체 정의하기

복소수를 표현하려면 먼저 구조체(struct)를 정의해야 합니다.

public struct Complex

연산자 오버로딩으로 덧셈 구현하기

두 복소수를 더할 때는 실수부끼리, 허수부끼리 각각 더해주면 됩니다. 이를 위해 + 연산자를 오버로딩합니다.

public static Complex operator +(Complex one, Complex two) {
    return new Complex(one.real + two.real, one.imaginary + two.imaginary);
}

아래 코드를 직접 실행해 보면 C#에서 복소수를 어떻게 다루는지 확인할 수 있습니다.

전체 예제 코드

using System;

public struct Complex {
    public int real;
    public int imaginary;

    public Complex(int real, int imaginary) {
        this.real = real;
        this.imaginary = imaginary;
    }

    // 두 복소수의 덧셈
    public static Complex operator +(Complex one, Complex two) {
        return new Complex(one.real + two.real, one.imaginary + two.imaginary);
    }

    // 출력 형식 지정
    public override string ToString() {
        return (String.Format("{0} + {1}i", real, imaginary));
    }
}

class Demo {
    static void Main() {
        Complex val1 = new Complex(7, 1);
        Complex val2 = new Complex(2, 6);

        // 두 복소수 더하기
        Complex res = val1 + val2;

        Console.WriteLine("First: {0}", val1);
        Console.WriteLine("Second: {0}", val2);

        // 결과 출력
        Console.WriteLine("Result (Sum): {0}", res);
        Console.ReadLine();
    }
}

실행 결과

First: 7 + 1i
Second: 2 + 6i
Result (Sum): 9 + 7i

참고: .NET 내장 Complex 타입 활용하기

.NET Framework 4.0 이상을 사용하는 환경이라면 System.Numerics 네임스페이스에 포함된 Complex 구조체를 활용하는 것도 좋은 방법입니다. 이 내장 타입은 사칙연산은 물론 지수, 로그, 삼각 함수 등 다양한 수학 연산을 기본적으로 지원하므로, 직접 구조체를 작성하지 않고도 복소수 계산을 손쉽게 처리할 수 있습니다.