zmeny
This commit is contained in:
parent
20a665972a
commit
2f9b482d86
@ -1,26 +1,43 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <math.h>
|
|
||||||
#define LINE_SIZE 256
|
#define LINE_SIZE 256
|
||||||
int main() {
|
|
||||||
char line[LINE_SIZE];
|
|
||||||
|
|
||||||
if (!fgets(line, LINE_SIZE, stdin) || atol(line) == 0) { // Načítanie prvej hodnoty a kontrola, či je to číslo
|
// Funkcia na kontrolu, či je reťazec platné číslo (desatinné alebo celé)
|
||||||
printf("Nepodarilo sa nacitat zaklad x\n"); // Ak používateľ nič nezadal alebo zadal neplatné číslo, program sa ukončí
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
char line[LINE_SIZE]; // Pole na ukladanie vstupného riadka
|
||||||
|
|
||||||
|
// 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");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
double x = atof(line); // Konverzia načítaného reťazca na číslo (double)
|
||||||
|
|
||||||
int x = atol(line); // Konverzia načítaného reťazca na číslo
|
// 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
|
||||||
|
|
||||||
double res = 0;
|
// Cyklus na načítanie ďalších koeficientov polynómu
|
||||||
int coefficient = 1; // Premenná na uchovanie počtu polynómov
|
while (fgets(line, LINE_SIZE, stdin) != NULL && line[0] != '\n') { // Číta, kým nie je prázdny riadok
|
||||||
for (int i = 2; i >= 0; i--) { // Polynóm má 3 koeficienty (pre x^2, x^1, x^0), takže iterácie idú od 2 do 0 vrátane
|
coefficient++;
|
||||||
if (!fgets(line, LINE_SIZE, stdin) || atol(line) == 0) { // Načítanie všetkých koeficientov a kontrola, či sú čísla
|
if (!isFloat(line)) { // Kontrola, či je vstup číslo
|
||||||
printf("Nepodarilo sa nacitat polynom na %d mieste.\n" , coefficient);
|
printf("Nepodarilo sa nacitat polynom na %d mieste.\n", coefficient);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
res += atol(line) * pow(x, i); // Aktuálny koeficient sa vynásobí x umocneným na i
|
res = res * x + atof(line); // Použitie Hornerovej schémy na výpočet hodnoty polynómu
|
||||||
coefficient++; // Zvýšenie počítadla koeficientov
|
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Vysledok je: %.2f\n", res);
|
printf("Vysledok je: %.2f\n", res);
|
||||||
@ -29,3 +46,4 @@ int main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user