#include #include #include // 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; }