소개
이 실습에서는 C 프로그래밍으로 이차 방정식을 푸는 방법을 배웁니다. 이 실습은 이차 방정식의 계수를 읽는 것부터 판별식을 계산하고 실수 또는 복소수 근을 결정하는 전체 과정을 다룹니다. 사용자에게 계수를 입력받고 필요한 계산을 수행하며 해를 출력하는 C 프로그램을 작성할 것입니다.
이 실습은 두 가지 주요 단계로 나뉩니다. 첫째, 사용자로부터 계수 a, b, 및 c 를 읽는 방법을 배우게 됩니다. 둘째, 프로그램을 수정하여 판별식을 계산하고 이차 공식을 사용하여 방정식의 근을 찾고 실수 및 복소수 해를 모두 처리하게 됩니다.
a, b, c 입력
이 단계에서는 C 에서 이차 방정식의 입력 값을 읽는 방법을 배웁니다. 사용자로부터 계수 a, b, 및 c 를 받는 프로그램을 만들 것입니다.
먼저 이차 방정식 해결 프로그램을 위한 새 파일을 만듭니다.
cd ~/project
nano quadratic_solver.c
이제 다음 코드를 파일에 추가합니다.
#include <stdio.h>
int main() {
double a, b, c;
// 사용자에게 입력을 요청합니다.
printf("계수 a 를 입력하세요: ");
scanf("%lf", &a);
printf("계수 b 를 입력하세요: ");
scanf("%lf", &b);
printf("계수 c 를 입력하세요: ");
scanf("%lf", &c);
// 입력된 계수를 출력합니다.
printf("입력된 계수:\n");
printf("a = %.2f\n", a);
printf("b = %.2f\n", b);
printf("c = %.2f\n", c);
return 0;
}
프로그램을 컴파일합니다.
gcc quadratic_solver.c -o quadratic_solver
프로그램을 실행합니다.
./quadratic_solver
예시 출력:
계수 a를 입력하세요: 1
계수 b를 입력하세요: -5
계수 c를 입력하세요: 6
입력된 계수:
a = 1.00
b = -5.00
c = 6.00
코드의 주요 부분을 살펴보겠습니다.
scanf()는 각 계수에 대한 사용자 입력을 읽는 데 사용됩니다.%lf는 배정밀도 부동소수점 숫자를 위한 형식 지정자입니다.- 계수는 변수 a, b, 및 c 에 저장됩니다.
- 프로그램은 입력 확인을 위해 입력된 계수를 다시 출력합니다.
판별식 계산 및 근 결정
이 단계에서는 이전 프로그램을 수정하여 판별식을 계산하고 이차 공식을 사용하여 이차 방정식의 근을 결정합니다.
기존 파일을 열고 코드를 업데이트합니다.
cd ~/project
nano quadratic_solver.c
이전 코드를 다음 코드로 바꿉니다.
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double discriminant, root1, root2;
// 사용자에게 입력을 요청합니다.
printf("계수 a 를 입력하세요: ");
scanf("%lf", &a);
printf("계수 b 를 입력하세요: ");
scanf("%lf", &b);
printf("계수 c 를 입력하세요: ");
scanf("%lf", &c);
// 판별식 계산
discriminant = b * b - 4 * a * c;
// 판별식을 확인하여 근의 유형을 결정합니다.
if (discriminant > 0) {
// 서로 다른 두 실수 근
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("서로 다른 두 실수 근:\n");
printf("근 1 = %.2f\n", root1);
printf("근 2 = %.2f\n", root2);
} else if (discriminant == 0) {
// 중복되는 하나의 실수 근
root1 = -b / (2 * a);
printf("중복되는 하나의 실수 근:\n");
printf("근 = %.2f\n", root1);
} else {
// 복소수 근
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("복소수 근:\n");
printf("근 1 = %.2f + %.2fi\n", realPart, imaginaryPart);
printf("근 2 = %.2f - %.2fi\n", realPart, imaginaryPart);
}
return 0;
}
수학 라이브러리와 함께 프로그램을 컴파일합니다.
gcc quadratic_solver.c -o quadratic_solver -lm
다양한 시나리오로 프로그램을 실행합니다.
./quadratic_solver
예시 출력 (두 실수 근):
계수 a를 입력하세요: 1
계수 b를 입력하세요: -5
계수 c를 입력하세요: 6
서로 다른 두 실수 근:
근 1 = 3.00
근 2 = 2.00
예시 출력 (하나의 실수 근):
계수 a를 입력하세요: 1
계수 b를 입력하세요: -2
계수 c를 입력하세요: 1
중복되는 하나의 실수 근:
근 = 1.00
예시 출력 (복소수 근):
계수 a를 입력하세요: 1
계수 b를 입력하세요: 2
계수 c를 입력하세요: 5
복소수 근:
근 1 = -1.00 + 2.00i
근 2 = -1.00 - 2.00i
코드의 주요 내용:
- 이차 공식을 사용하여 근을 계산합니다.
- 판별식을 확인하여 근의 유형을 결정합니다.
- 두 실수 근, 하나의 실수 근, 복소수 근의 세 가지 시나리오를 처리합니다.
math.h라이브러리의sqrt()함수를 사용합니다.- 수학 라이브러리를 연결하기 위해
-lm플래그로 컴파일합니다.
실수 또는 복소수 해 출력
이 단계에서는 이차 방정식 해결 프로그램을 개선하여 더 자세한 출력을 제공하고 개선된 서식으로 서로 다른 해의 유형을 처리합니다.
기존 파일을 열고 코드를 업데이트합니다.
cd ~/project
nano quadratic_solver.c
이전 코드를 다음 코드로 바꿉니다.
#include <stdio.h>
#include <math.h>
void printQuadraticSolutions(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
printf("이차 방정식: %.2fx² + %.2fx + %.2f = 0\n", a, b, c);
printf("판별식: %.2f\n", discriminant);
if (discriminant > 0) {
double root1 = (-b + sqrt(discriminant)) / (2 * a);
double root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("해의 유형: 서로 다른 두 실수 근\n");
printf("근 1: %.2f\n", root1);
printf("근 2: %.2f\n", root2);
} else if (discriminant == 0) {
double root = -b / (2 * a);
printf("해의 유형: 중복되는 하나의 실수 근\n");
printf("근: %.2f\n", root);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("해의 유형: 복소수 켤레 근\n");
printf("근 1: %.2f + %.2fi\n", realPart, imaginaryPart);
printf("근 2: %.2f - %.2fi\n", realPart, imaginaryPart);
}
}
int main() {
double a, b, c;
printf("이차 방정식 해결기\n");
printf("--------------------\n");
printf("계수 a 를 입력하세요: ");
scanf("%lf", &a);
printf("계수 b 를 입력하세요: ");
scanf("%lf", &b);
printf("계수 c 를 입력하세요: ");
scanf("%lf", &c);
printf("\n");
printQuadraticSolutions(a, b, c);
return 0;
}
프로그램을 컴파일합니다.
gcc quadratic_solver.c -o quadratic_solver -lm
다양한 시나리오로 프로그램을 실행합니다.
./quadratic_solver
예시 출력 (두 실수 근):
이차 방정식 해결기
--------------------
계수 a를 입력하세요: 1
계수 b를 입력하세요: -5
계수 c를 입력하세요: 6
이차 방정식: 1.00x² + -5.00x + 6.00 = 0
판별식: 1.00
해의 유형: 서로 다른 두 실수 근
근 1: 3.00
근 2: 2.00
(나머지 예시 출력은 생략)
주요 개선 사항:
- 코드 구성을 개선하기 위해 별도의 함수
printQuadraticSolutions()를 만들었습니다. - 해의 유형과 방정식 세부 정보가 포함된 더욱 설명적인 출력을 추가했습니다.
- 이전 단계의 근 계산 논리를 유지했습니다.
- 제목과 명확한 서식을 사용하여 사용자 인터페이스를 개선했습니다.
요약
이 실습에서는 C 언어로 이차 방정식의 입력 값을 읽고, 판별식을 계산하며, 이차 공식을 사용하여 실수 또는 복소수 근을 결정하는 방법을 배웁니다. 프로그램은 사용자에게 계수 a, b, c 를 입력하도록 요청하고, 판별식을 계산하여 근의 성질을 결정합니다. 마지막으로 프로그램은 실수 또는 복소수 해를 출력합니다.
이 실습에서 다루는 주요 단계는 계수에 대한 사용자 입력을 읽고, 판별식을 계산하고, 이차 공식을 적용하여 근을 찾는 것입니다. 프로그램은 또한 입력 계수를 확인하고 계산된 해를 제공합니다.



