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

C 언어에서 구조체를 함수로 전달해 두 개의 복소수를 더하는 방법

C 프로그래밍 언어에서 두 개의 복소수를 더하려면, 실수부(real)와 허수부(imag)를 구조체 멤버로 선언하고 사용자 정의 함수를 통해 덧셈 연산을 수행해야 합니다. 이 글에서는 구조체를 함수에 전달하는 방식으로 두 복소수의 합을 구하는 전체 과정을 알고리즘, 예제 코드, 실행 결과 순으로 단계별로 살펴봅니다.

알고리즘

두 복소수의 덧셈을 수행하기 위한 알고리즘은 다음과 같습니다.

Step 1: 실수부와 허수부를 데이터 멤버로 갖는 struct complex를 선언한다.
Step 2: 구조체 이름과 변수를 선언한다.
Step 3: 실행 시점(runtime)에 첫 번째 복소수의 실수부와 허수부를 입력받는다.
Step 4: 실행 시점에 두 번째 복소수의 실수부와 허수부를 입력받는다.
Step 5: 함수를 호출하여 number1과 number2의 덧셈을 계산한 뒤 Step 7로 이동한다.
Step 6: 결과를 출력한다.
Step 7: 덧셈 수행
- 임시 변수(temp)를 선언한다.
- temp.real = num1.real + num2.real;
- temp.imag = num1.imag + num2.imag;
- return (temp);

예제 코드

다음은 구조체를 함수에 전달하여 두 복소수를 더하는 C 프로그램입니다.

#include <stdio.h>
typedef struct complex{
    float real;
    float imag;
} complex;
complex addition(complex num1, complex num2);
int main(){
    complex num1, num2, value;
    printf("entering real and imag parts of first complex no:\n ");
    scanf("%f %f", &num1.real, &num1.imag);
    printf("entering real and imag parts of second complex no:\n ");
    scanf("%f %f", &num2.real, &num2.imag);
    value = addition(num1, num2);
    printf("result = %.1f + %.1fi", value.real, value.imag);
    return 0;
}
complex addition(complex num1, complex num2){
    complex temp;
    temp.real = num1.real + num2.real;
    temp.imag = num1.imag + num2.imag;
    return (temp);
}

코드 설명

구조체 정의

typedef struct complex를 사용하여 float형 real(실수부)과 imag(허수부) 두 멤버를 가진 구조체를 정의하고, 이를 complex라는 이름으로 바로 사용할 수 있게 합니다.

함수 선언과 호출

addition() 함수는 complex 구조체 두 개를 매개변수로 받아 덧셈 결과를 complex 구조체 형태로 반환합니다. main() 함수에서는 사용자로부터 두 복소수의 실수부와 허수부를 각각 입력받은 뒤, 이 구조체들을 함수에 전달하여 결과를 저장합니다.

덧셈 로직

복소수의 덧셈은 실수부끼리, 허수부끼리 각각 더하는 방식으로 이루어집니다. 즉, temp.real에는 두 실수부의 합을, temp.imag에는 두 허수부의 합을 대입한 후 임시 구조체를 반환합니다.

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

entering real and imag parts of first complex no:
entering real and imag parts of second complex no:
result = 0.0 + 0.0i

예를 들어 첫 번째 복소수로 실수부 3.5, 허수부 2.0을 입력하고, 두 번째 복소수로 실수부 1.5, 허수부 4.5를 입력하면 다음과 같이 합이 출력됩니다.

entering real and imag parts of first complex no:
3.5 2.0
entering real and imag parts of second complex no:
1.5 4.5
result = 5.0 + 6.5i

이처럼 구조체를 함수의 인자로 전달하면 복소수의 실수부와 허수부를 하나의 단위로 묶어 처리할 수 있어, 코드의 가독성과 재사용성이 크게 향상됩니다.