104 lines
1.9 KiB
C
104 lines
1.9 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <math.h>
|
|
|
|
int main() {
|
|
char riadok[100];
|
|
|
|
while (fgets(riadok, sizeof(riadok), stdin)) {
|
|
|
|
// prázdny riadok -> KONIEC
|
|
if (riadok[0] == '\n') {
|
|
break;
|
|
}
|
|
|
|
char *r = riadok;
|
|
char *end;
|
|
|
|
// preskoč medzery
|
|
while (*r == ' '){
|
|
r++;
|
|
}
|
|
|
|
// 1. číslo
|
|
float a = strtof(r, &end);
|
|
if (r == end) {
|
|
printf("CHYBA\n");
|
|
continue;
|
|
}
|
|
r = end;
|
|
|
|
while (*r == ' '){
|
|
r++;
|
|
}
|
|
|
|
// operátor
|
|
char or = *r;
|
|
if (!(or == '+' || or == '-' || or == '*' || or == '/')) {
|
|
printf("CHYBA\n");
|
|
continue;
|
|
}
|
|
r++;
|
|
|
|
while (*r == ' '){
|
|
r++;
|
|
}
|
|
|
|
// 2. číslo
|
|
float b = strtof(r, &end);
|
|
if (r == end) {
|
|
printf("CHYBA\n");
|
|
continue;
|
|
}
|
|
r = end;
|
|
|
|
while (*r == ' '){
|
|
r++;
|
|
}
|
|
|
|
// '='
|
|
if (*r != '=') {
|
|
printf("CHYBA\n");
|
|
continue;
|
|
}
|
|
r++;
|
|
|
|
while (*r == ' '){
|
|
r++;
|
|
}
|
|
|
|
// výsledok
|
|
float c = strtof(r, &end);
|
|
if (r == end) {
|
|
printf("CHYBA\n");
|
|
continue;
|
|
}
|
|
r = end;
|
|
|
|
// výpočet
|
|
float cislo;
|
|
|
|
if (or == '+') cislo = a + b;
|
|
else if (or == '-') cislo = a - b;
|
|
else if (or == '*') cislo = a * b;
|
|
else {
|
|
if (fabs(b) < 0.000001) {
|
|
printf("ZLE\n");
|
|
continue;
|
|
}
|
|
cislo = a / b;
|
|
}
|
|
|
|
float zaoblenie = round(cislo * 100) / 100.0;
|
|
|
|
// porovnanie s toleranciou
|
|
if (fabs(zaoblenie - c) <= 0.001) {
|
|
printf("OK\n");
|
|
} else {
|
|
printf("ZLE\n");
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
} |