본문 바로가기

프로그래밍 언어 문제/C

[C언어] 연습문제3

[문제]

복소수(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