[문제]
복소수(Complex Number)를 나타내는 구조체를 정의하고, 복소수의 덧셈과 곱셈을 위한 함수를 각각 정의하자. 그리고 이를 기반으로 프로그램 사용자로부터 두 개의 복소수 정보를 입력 받아서 두 복소수의 덧셈과 곱셈의 결과를 출력하는 프로그램을 작성하자.
참고
복소수의 덧셈공식: (a+bi) + (c+di) = (a+c) + (b+d)i
복소수의 곱셈공식: (a+bi) * (c+di) = ac - bd + bci + adi
[실행결과]
복소수 입력1[실수 허수]: 1.2 2.4
복소수 입력2[실수 허수]: 1.1 2.2
합의 결과] 실수: 2.300000, 허수: 4.600000
곱의 결과] 실수: -3.960000, 허수: 5.280000
[수정할 코드]
#include <stdio.h>
typedef struct sComplexNumber
{
double realNum;
double fakeNum;
}sComplexNum;
void AddFunc(sComplexNum n1, sComplexNum n2)
{
sComplexNum result;
result.realNum = n1.realNum + n2.realNum;
result.fakeNum = n1.fakeNum + n2.fakeNum;
printf("합의 결과] 실수: %lf, 허수: %lf\n", result.realNum, result.fakeNum);
}
void MulFunc(sComplexNum n1, sComplexNum n2)
{
sComplexNum result;
result.realNum = n1.realNum * n2.realNum - n1.fakeNum * n2.fakeNum;
result.fakeNum = n1.fakeNum * n2.realNum + n1.realNum * n2.fakeNum;
printf("곱의 결과] 실수: %lf, 허수: %lf\n", result.realNum, result.fakeNum);
}
int main(void)
{
sComplexNum complexNum1, complexNum2;
printf("복소수 입력1[실수 허수]: ");
scanf("%lf %lf", &complexNum1.realNum, &complexNum1.fakeNum);
printf("복소수 입력2[실수 허수]: ");
scanf("%lf %lf", &complexNum2.realNum, &complexNum2.fakeNum);
AddFunc(complexNum1, complexNum2);
MulFunc(complexNum1, complexNum2);
return 0;
}
[코드]
#include<stdio.h>
typedef struct _Complex
{
double real;
double imag;
}Complex;
Complex Add(Complex c1, Complex c2);
Complex Multi(Complex c1, Complex c2);
void ShowData(Complex c);
int main(void)
{
Complex c1, c2;
printf("복소수 입력1(실수 허수): ");
scanf_s("%lf %lf", &c1.real, &c1.imag);
printf("복소수 입력2(실수 허수): ");
scanf_s("%lf %lf", &c2.real, &c2.imag);
printf("합의 결과] ");
ShowData(Add(c1, c2));
printf("곱의 결과] ");
ShowData(Multi(c1, c2));
return 0;
}
Complex Add(Complex c1, Complex c2)
{
Complex temp;
temp.real = c1.real + c2.real;
temp.imag = c1.imag + c2.imag;
return temp;
}
Complex Multi(Complex c1, Complex c2)
{
Complex temp;
temp.real = c1.real * c2.real - c1.imag * c2.imag;
temp.imag = c1.real * c2.imag + c1.imag * c2.real;
return temp;
}
void ShowData(Complex c)
{
printf("실수부: %f, 허수부: %f \n", c.real, c.imag);
}
<참고>
윤성우의 열혈 C 프로그래밍
하나의 함수는 하나의 기능만 담당하도록 구성해야 된다.
'프로그래밍 언어 문제 > C' 카테고리의 다른 글
[C언어] 연습문제1 (0) | 2022.05.07 |
---|---|
[C언어] 연습문제2 (0) | 2022.05.06 |
[C언어] 연습문제4 (0) | 2022.05.05 |
[C언어] 연습문제5 (0) | 2022.04.20 |
[C언어] 연습문제6 (0) | 2022.04.16 |