easy software

C언어 구조체를 이용한 복소수(Complex Number) 덧셈과 곱셈 프로그램 본문

C언어/구조체

C언어 구조체를 이용한 복소수(Complex Number) 덧셈과 곱셈 프로그램

JAVA 웹개발자 2015. 2. 17. 20:38

수학시간이 아니므로 복소수(Complex Number)에 대한 설명은 제외하기로 하겠습니다.

 

단, 문제의 이해를 위해서 복소수의 덧셈과 곱셈공식은 보여드리겠습니다.

 

복소수의 덧셈 공식 : (a+bi) + (c+di) = (a+c) + (b+d)i

복소수의 곱셈 공식 : (a+bi) * (c+di) = ac - bd + bci + adi

 

i는 허수입니다. 복소수에 대한 이해가 조금 부족하신 분들은

 

위의 공식에서 i를 제외하고 생각하셔도 무관합니다.

 

 

 

지금 보여드릴 프로그램에서는 복소수를 나타내는 구조체를 정의하고,

 

덧셈과 곱셈을 위한 함수를 정의했습니다.

 

main함수에서는 두 개의 복소수를 사용자로부터 입력받아서 덧셈과 곱셈 연산의 결과를 출력합니다.

 

 

 

실행의 예

 

*1.2가 a이고, 2.4는 b, 1.1은 c, 2.2는 d입니다. 연산할때 참고하세요.

 

 

 

 

 

#include <stdio.h>

 

//복소수를 나타내는 구조체
typedef struct{
     double rNumber; //실수
     double iNumber; //허수
}Complex;

 

//구조체를 먼저 선언한 후 함수가 있음을 표시해야 함
void comAdd(Complex, Complex);
void comMul(Complex, Complex);

 

int main(void){
     Complex c1, c2;

 

     //두개의 복소수를 입력받아 complex에 저장
     printf("복소수 입력1(실수 허수) : ");
     scanf("%lf %lf", &c1.rNumber, &c1.iNumber);
     printf("복소수 입력2(실수 허수) : ");
     scanf("%lf %lf", &c2.rNumber, &c2.iNumber);

 

     comAdd(c1, c2); //복소수 덧셈함수 호출
     comMul(c1, c2); //복소수 곱셈함수 호출

     return 0;
}

 

//복소수의 덧셈을 담당하는 함수
void comAdd(Complex comA1, Complex comA2){
     Complex add; //덧셈결과를 저장할 변수

 

     add.rNumber = comA1.rNumber + comA2.rNumber;
     add.iNumber = comA1.iNumber + comA2.iNumber;

     printf("\n합의 결과] 실수부 : %f, 허수부 : %f\n", add.rNumber, add.iNumber);
}

 

//복소수의 곱셈을 담당하는 함수
void comMul(Complex comM1, Complex comM2){
     Complex mul; //곱셈결과를 저장할 변수

 

     mul.rNumber = comM1.rNumber * comM2.rNumber -

         comM1.iNumber * comM2.iNumber;
     mul.iNumber = comM1.iNumber * comM2.rNumber +

         comM1.rNumber * comM2.iNumber;

     printf("곱의 결과] 실수부 : %f, 허수부 : %f\n\n", mul.rNumber, mul.iNumber);
}

 

 

Complex에는 실수와 허수를 저장하는 멤버가 정의되어 있습니다.

 

이후에 사용자로부터 입력받은 두개의 복소수를 각각 Complex형 구조체에 저장하고,

 

저장된 값을 통해서 덧셈과 곱셈연산을 수행하는 함수를 호출합니다.

 

각 함수마다 새로 선언된 Complex변수에 곱셈과, 덧셈결과를 저장한 후 출력하고 있습니다.

 

사실 복소수의 덧셈, 곱셈 공식과 구조체의 기본 개념만 알아도 쉽게 구현할 수 있는 프로그램입니다.

 

만약, 구조체의 기본 개념과 선언 방법을 모른다면

 

제 블로그의 구조체 카테고리에서 공부해 보세요.

Comments