#include #include #include #include #define LINE_SIZE 100 int main() { char input[LINE_SIZE]; char* cast1; //budem prehadzovat odseknuty riadok hore dole while (1) { if (fgets(input, LINE_SIZE, stdin) == NULL || input [0] == '\n') break; char *cast2 = input; //beriem si nacitany riadok ktory idem riesit //nacitam si prve cislo a okontrolujem ci je validne float a = strtof(cast2, &cast1); //float kde si nahram prve cislo prikladu if (cast2 == cast1) { //podla toho co som odparsoval, ak sa neodparsoval cislo, ostane mi tam stale cely string printf ("CHYBA\n"); continue; } cast2 = cast1; //ulozim si poziciu v pamati kde som naposledy skoncil while (*cast2 == ' ') cast2++; //zbavim sa medzier char operacia = *cast2; //nacitam si do jednotkovej premennej char prvy prvok pola cast2, //ktory by malo byt znamienko operacie if (operacia != '+' && operacia != '-' && operacia != '*' && operacia != '/') { printf ("CHYBA\n"); continue; } cast2++; //posuniem sa na dalsiu poziciu pola char kde by malo byt cislo alebo medzera while (*cast2 == ' ') cast2++; //zbavim sa medzier float b = strtof(cast2, &cast1); //float kde si nahram druhe cislo prikladu (kopia nacitania prveho cisla) if (cast2 == cast1) { //podla toho co som odparsoval, ak sa neodparsoval cislo, ostane mi tam stale cely string printf ("CHYBA\n"); continue; } cast2 = cast1; //ulozim si poziciu v pamati kde som naposledy skoncil while (*cast2 == ' ') cast2++; //zbavim sa medzier po = char rovna_sa = *cast2; //nacitam si do jednotkovej premennej znak, dufam ze je to = if (rovna_sa != '=') { printf ("CHYBA\n"); continue; } cast2++; //posuniem sa na dalsiu poziciu pola char kde by malo byt cislo alebo medzera while (*cast2 == ' ') cast2++; //zbavim sa medzier float c = strtof(cast2, &cast1); //float kde si nahram vysledok prikladu (kopia nacitania prveho cisla) if (cast2 == cast1) { //podla toho co som odparsoval, ak sa neodparsoval cislo, ostane mi tam stale cely string printf ("CHYBA\n"); continue; } float vysledok; switch (operacia) { case '+': vysledok = a + b; break; case '-': vysledok = a - b; break; case '*': vysledok = a * b; break; case '/': if (b == 0) { printf ("ZLE\n"); continue; } vysledok = a / b; break; default: printf ("CHYBA\n"); continue; } float zaokruhleny_vysledok = roundf(vysledok * 100) / 100; //zaokruhlim moj vysledok na 2 des. miesta float zaokruhlene_c = roundf(c * 100) / 100; //zaokruhlim nacitane c na 2 des. miesta if (zaokruhleny_vysledok == zaokruhlene_c) printf("OK\n"); else printf ("ZLE\n"); } return 0; }