pvjc25/du2/program.c

50 lines
1.7 KiB
C
Raw Permalink Normal View History

2025-02-22 20:43:29 +00:00
#include <stdio.h>
#include <stdlib.h>
#define LINE_SIZE 256
2025-02-23 15:08:11 +00:00
// Funkcia na kontrolu, či je reťazec platné číslo (desatinné alebo celé)
int isFloat(const char *str) {
if (*str == '\0') return 0; // Ak je reťazec prázdny, nie je to číslo
char *endptr;
strtod(str, &endptr); // Pokus o konverziu reťazca na desatinné číslo
return *endptr == '\0' || *endptr == '\n'; // Skontroluje, či bol celý reťazec číslo
}
2025-02-22 20:43:29 +00:00
int main() {
2025-02-23 15:08:11 +00:00
char line[LINE_SIZE]; // Pole na ukladanie vstupného riadka
2025-02-22 20:43:29 +00:00
2025-02-23 15:08:11 +00:00
// Načítanie hodnoty x a kontrola, či je platné číslo
if (!fgets(line, LINE_SIZE, stdin) || !isFloat(line)) {
printf("Nepodarilo sa nacitat zaklad x\n");
2025-02-22 20:43:29 +00:00
return 0;
}
2025-02-23 15:08:11 +00:00
double x = atof(line); // Konverzia načítaného reťazca na číslo (double)
2025-02-22 20:43:29 +00:00
2025-02-23 15:08:11 +00:00
// Načítanie prvého koeficientu polynómu a jeho kontrola
if (!fgets(line, LINE_SIZE, stdin) || !isFloat(line)) {
printf("Nepodarilo sa nacitat polynom na 1 mieste.\n");
return 0;
}
double res = atof(line); // Prvý koeficient sa uloží do výsledku
int coefficient = 1; // Počítadlo koeficientov
2025-02-22 20:43:29 +00:00
2025-02-23 15:08:11 +00:00
// Cyklus na načítanie ďalších koeficientov polynómu
while (fgets(line, LINE_SIZE, stdin) != NULL && line[0] != '\n') { // Číta, kým nie je prázdny riadok
coefficient++;
if (!isFloat(line)) { // Kontrola, či je vstup číslo
printf("Nepodarilo sa nacitat polynom na %d mieste.\n", coefficient);
2025-02-22 20:43:29 +00:00
return 0;
}
2025-02-23 15:08:11 +00:00
res = res * x + atof(line); // Použitie Hornerovej schémy na výpočet hodnoty polynómu
2025-02-22 20:43:29 +00:00
}
2025-02-22 20:47:06 +00:00
printf("Vysledok je: %.2f\n", res);
2025-02-22 20:43:29 +00:00
return 0;
}
2025-02-23 15:08:11 +00:00