소개
이 실습에서는 C 프로그래밍에서 다항식 표현식을 평가하는 방법을 배웁니다. 이 실습은 다음 단계를 포함합니다: 사용자 입력으로부터 다항식 계수와 변수 x 를 읽고, 호너 방법을 사용하여 다항식 표현식을 효율적으로 평가하는 것입니다. 이 실습을 마치면 C 에서 대수 표현식을 다루고 효과적인 다항식 평가 알고리즘을 구현하는 데 대한 이해도가 높아질 것입니다.
이 실습에서는 C 프로그래밍에서 다항식 표현식을 평가하는 방법을 배웁니다. 이 실습은 다음 단계를 포함합니다: 사용자 입력으로부터 다항식 계수와 변수 x 를 읽고, 호너 방법을 사용하여 다항식 표현식을 효율적으로 평가하는 것입니다. 이 실습을 마치면 C 에서 대수 표현식을 다루고 효과적인 다항식 평가 알고리즘을 구현하는 데 대한 이해도가 높아질 것입니다.
이 단계에서는 C 프로그램에서 사용자 입력으로부터 다항식 계수와 변수 x 를 읽는 방법을 배웁니다. 이는 다항식 평가 알고리즘을 구현하는 첫 번째 부분입니다.
먼저 다항식 평가 프로그램을 위한 새로운 C 파일을 만듭니다.
cd ~/project
nano polynomial_eval.c
이제 계수와 변수 x 를 읽는 다음 코드를 추가합니다.
#include <stdio.h>
#define MAX_DEGREE 10
int main() {
int degree;
double coefficients[MAX_DEGREE + 1];
double x;
// 다항식의 차수를 읽습니다.
printf("다항식의 차수를 입력하세요 (0-10): ");
scanf("%d", °ree);
// 계수를 읽습니다.
printf("최고차항부터 상수항까지 계수를 입력하세요:\n");
for (int i = degree; i >= 0; i--) {
printf("x^%d의 계수: ", i);
scanf("%lf", &coefficients[i]);
}
// x 의 값을 읽습니다.
printf("x 의 값을 입력하세요: ");
scanf("%lf", &x);
return 0;
}
예시 출력:
다항식의 차수를 입력하세요 (0-10): 3
최고차항부터 상수항까지 계수를 입력하세요:
x^3의 계수: 2
x^2의 계수: -3
x^1의 계수: 0
x^0의 계수: 5
x의 값을 입력하세요: 2
코드를 자세히 살펴보겠습니다.
degree는 다항식의 차수를 저장합니다.coefficients 배열은 최고차항부터 상수항까지 계수를 저장합니다.x는 다항식을 평가할 값을 저장합니다.scanf()를 사용하여 사용자 입력 (차수, 계수, x 값) 을 읽습니다.컴파일하고 프로그램을 실행하여 입력을 테스트합니다.
gcc polynomial_eval.c -o polynomial_eval
./polynomial_eval
이 단계에서는 다항식 표현식을 효율적으로 평가하기 위해 호너 방법을 구현합니다. 호너 방법은 다항식 값을 계산하는 데 필요한 곱셈 횟수를 줄입니다.
이전 C 파일을 열고 호너 방법 평가를 포함하도록 수정합니다.
cd ~/project
nano polynomial_eval.c
호너 방법 구현을 포함하여 코드를 업데이트합니다.
#include <stdio.h>
#define MAX_DEGREE 10
double hornerMethod(int degree, double coefficients[], double x) {
double result = coefficients[degree];
for (int i = degree - 1; i >= 0; i--) {
result = result * x + coefficients[i];
}
return result;
}
int main() {
int degree;
double coefficients[MAX_DEGREE + 1];
double x, result;
// 이전 입력 코드는 동일하게 유지
printf("다항식의 차수를 입력하세요 (0-10): ");
scanf("%d", °ree);
printf("최고차항부터 상수항까지 계수를 입력하세요:\n");
for (int i = degree; i >= 0; i--) {
printf("x^%d의 계수: ", i);
scanf("%lf", &coefficients[i]);
}
printf("x 의 값을 입력하세요: ");
scanf("%lf", &x);
// 호너 방법을 사용하여 다항식을 평가합니다.
result = hornerMethod(degree, coefficients, x);
printf("x = %.2f 에서 다항식의 값은: %.2f\n", x, result);
return 0;
}
업데이트된 프로그램을 컴파일하고 실행합니다.
gcc polynomial_eval.c -o polynomial_eval
./polynomial_eval
예시 출력:
다항식의 차수를 입력하세요 (0-10): 3
최고차항부터 상수항까지 계수를 입력하세요:
x^3의 계수: 2
x^2의 계수: -3
x^1의 계수: 0
x^0의 계수: 5
x의 값을 입력하세요: 2
x = 2.00에서 다항식의 값은: 11.00
호너 방법을 자세히 살펴보겠습니다.
hornerMethod()는 차수, 계수, x 를 매개변수로 받습니다.이 방법은 x = 2 에서 2x³ - 3x² + 0x + 5 와 같은 다항식을 효율적으로 평가합니다.
이 마지막 단계에서는 사용자 경험을 개선하기 위해 다항식 평가 프로그램에 서식화된 출력과 오류 처리를 추가합니다.
이전 C 파일을 열고 개선된 결과 출력으로 업데이트합니다.
cd ~/project
nano polynomial_eval.c
서식화된 결과 출력 및 입력 유효성 검사를 포함하여 코드를 업데이트합니다.
#include <stdio.h>
#define MAX_DEGREE 10
double hornerMethod(int degree, double coefficients[], double x) {
double result = coefficients[degree];
for (int i = degree - 1; i >= 0; i--) {
result = result * x + coefficients[i];
}
return result;
}
void printPolynomial(int degree, double coefficients[]) {
printf("다항식: ");
for (int i = degree; i >= 0; i--) {
if (coefficients[i] != 0) {
if (i == degree) {
printf("%.2fx^%d ", coefficients[i], i);
} else if (i > 1) {
printf("%+.2fx^%d ", coefficients[i], i);
} else if (i == 1) {
printf("%+.2fx ", coefficients[i]);
} else {
printf("%+.2f", coefficients[i]);
}
}
}
printf("\n");
}
int main() {
int degree;
double coefficients[MAX_DEGREE + 1];
double x, result;
// 입력 유효성 검사
do {
printf("다항식의 차수를 입력하세요 (0-10): ");
scanf("%d", °ree);
} while (degree < 0 || degree > MAX_DEGREE);
printf("최고차항부터 상수항까지 계수를 입력하세요:\n");
for (int i = degree; i >= 0; i--) {
printf("x^%d의 계수: ", i);
scanf("%lf", &coefficients[i]);
}
printf("x 의 값을 입력하세요: ");
scanf("%lf", &x);
// 다항식 정보 출력
printPolynomial(degree, coefficients);
// 호너 방법을 사용하여 다항식을 평가합니다.
result = hornerMethod(degree, coefficients, x);
// 서식화된 결과 출력
printf("다항식 평가:\n");
printf("P(x) = f(%.2f) = %.2f\n", x, result);
return 0;
}
업데이트된 프로그램을 컴파일하고 실행합니다.
gcc polynomial_eval.c -o polynomial_eval
./polynomial_eval
예시 출력:
다항식의 차수를 입력하세요 (0-10): 3
최고차항부터 상수항까지 계수를 입력하세요:
x^3의 계수: 2
x^2의 계수: -3
x^1의 계수: 0
x^0의 계수: 5
x의 값을 입력하세요: 2
다항식: 2.00x^3 -3.00x^2 +5.00
다항식 평가:
P(x) = f(2.00) = 11.00
주요 개선 사항:
printPolynomial() 함수를 추가했습니다.이 실험에서는 먼저 C 프로그램에서 사용자 입력으로 다항식 계수와 변수 x 를 읽는 방법을 배웠습니다. 이는 다항식의 최대 차수를 정의하고 계수를 저장할 배열을 생성하며 scanf()를 사용하여 사용자 입력을 읽는 것을 포함합니다. 그런 다음, 다항식 값을 계산하는 데 필요한 곱셈 횟수를 줄이는 효율적인 다항식 표현식 평가를 위해 호너 방법을 구현했습니다. 이러한 단계를 따르면 C 에서 강력한 다항식 평가 알고리즘을 구현할 수 있습니다.