pvjc26/du3/program.c
2026-03-19 15:52:00 +00:00

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;
}