56 lines
1.9 KiB
C
56 lines
1.9 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
|
|
// Funkcie pre matematicke operacie
|
|
double scitaj(double a, double b) { return a + b; }
|
|
double odcitaj(double a, double b) { return a - b; }
|
|
double nasob(double a, double b) { return a * b; }
|
|
double del(double a, double b) {
|
|
if (b == 0) return NAN; // Ak sa deli nulou, vratime NaN
|
|
return a / b;
|
|
}
|
|
|
|
int main() {
|
|
char riadok[100]; // Pole pre nacitanie vstupu
|
|
double cislo1, cislo2, zadany_vysledok;
|
|
char operacia;
|
|
|
|
// Nekonecna slucka na citanie vstupu
|
|
while (1) {
|
|
if (!fgets(riadok, sizeof(riadok), stdin)) break; // Koniec vstupu
|
|
|
|
if (riadok[0] == '\n') break; // Ak je prazdny riadok, skoncime program
|
|
|
|
// Skusime nacitat vstup podla ocakavaneho formatu
|
|
if (sscanf(riadok, "%lf %c %lf = %lf", &cislo1, &operacia, &cislo2, &zadany_vysledok) == 4) {
|
|
double skutocny_vysledok;
|
|
|
|
// Rozhodneme podla operacie
|
|
if (operacia == '+') skutocny_vysledok = scitaj(cislo1, cislo2);
|
|
else if (operacia == '-') skutocny_vysledok = odcitaj(cislo1, cislo2);
|
|
else if (operacia == '*') skutocny_vysledok = nasob(cislo1, cislo2);
|
|
else if (operacia == '/') {
|
|
if (cislo2 == 0) { // Delenie nulou
|
|
printf("ZLE\n");
|
|
continue;
|
|
}
|
|
skutocny_vysledok = del(cislo1, cislo2);
|
|
} else {
|
|
printf("CHYBA\n"); // Neznama operacia
|
|
continue;
|
|
}
|
|
|
|
// Porovname skutocny vysledok so zadanym (zaokruhlenie na 2 desatinne miesta)
|
|
if (fabs(skutocny_vysledok - zadany_vysledok) < 0.005) {
|
|
printf("OK\n");
|
|
} else {
|
|
printf("ZLE\n");
|
|
}
|
|
} else {
|
|
printf("CHYBA\n"); // Zlyhal format vstupu
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
} |