From affd4a5ae56bd3c7a89148843b3b59246bba51b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1=C5=A1?= Date: Fri, 8 Mar 2024 08:21:46 +0000 Subject: [PATCH] Update 'cv3/program.c' --- cv3/program.c | 49 ++++++++++++++++++------------------------------- 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/cv3/program.c b/cv3/program.c index dd8b493..a277aa0 100644 --- a/cv3/program.c +++ b/cv3/program.c @@ -1,50 +1,37 @@ #include -#include -double hornerScheme(double x, double* coef, int n) { - double result = coef[0]; - for (int i = 1; i < n; i++) { - result = result * x + coef[i]; +#define MAX_COEFFICIENTS 100 + +double evaluatePolynomial(double x, double coefficients[], int n) { + double result = 0.0; + for (int i = 0; i < n; ++i) { + result = result * x + coefficients[i]; } return result; } int main() { - double x; + double x, coef; + double coefficients[MAX_COEFFICIENTS]; + int count = 0; + printf("Enter the value of x: "); if (scanf("%lf", &x) != 1) { printf("Invalid input for x.\n"); return 1; } - int capacity = 10, count = 0; - double* coefficients = (double*)malloc(capacity * sizeof(double)); - if (coefficients == NULL) { - printf("Failed to allocate memory.\n"); - return 1; - } - - printf("Enter coefficients (end with non-numeric input):\n"); - while (scanf("%lf", &coefficients[count]) == 1) { - count++; - if (count >= capacity) { - capacity *= 2; - double* temp = (double*)realloc(coefficients, capacity * sizeof(double)); - if (temp == NULL) { - free(coefficients); - printf("Failed to reallocate memory.\n"); - return 1; - } - coefficients = temp; + printf("Enter coefficients from highest to lowest degree, finish with an empty line:\n"); + while (scanf("%lf", &coef) == 1) { + if (count >= MAX_COEFFICIENTS) { + printf("Maximum number of coefficients exceeded.\n"); + return 1; } + coefficients[count++] = coef; } - - while (getchar() != '\n'); + double result = evaluatePolynomial(x, coefficients, count); + printf("Vysledok je: %.2f\n", result); - double result = hornerScheme(x, coefficients, count); - printf("The result is: %.2f\n", result); - - free(coefficients); return 0; }