This commit is contained in:
Andrii Hutsuliak 2025-03-01 12:53:58 +01:00
parent cd157124c5
commit 41e98613c8

View File

@ -2,51 +2,56 @@
#include <stdbool.h> #include <stdbool.h>
#include <math.h> #include <math.h>
// Funkcia kontroluje, či zadaný znak je operátor (+, -, *, /)
bool is_operation(char op) { bool is_operation(char op) {
return op == '+' || op == '-' || op == '*' || op == '/'; return op == '+' || op == '-' || op == '*' || op == '/';
} }
int main() { int main() {
char line[100]; char line[100]; // Pole na uloženie vstupného riadku
while(true) { // Nekonečný cyklus na spracovanie vstupu
while(true) { // Načítame vstupný riadok (ak je NULL alebo prázdny, ukončíme cyklus)
if(fgets(line, sizeof(line), stdin) == NULL || line[0] == '\n') { if(fgets(line, sizeof(line), stdin) == NULL || line[0] == '\n') {
break; break;
} }
double firstNumber = 0;
double secondNumber = 0; float firstNumber = 0; // Premenná na prvé číslo
double ans = 0; float secondNumber = 0; // Premenná na druhé číslo
char op; float ans = 0; // Očakávaný výsledok
if(sscanf(line, "%lf %c %lf = %lf", &firstNumber, &op, &secondNumber, &ans) != 4 || !is_operation(op)) { char op; // Znak operácie
// Parsujeme vstup vo formáte: číslo1 operátor číslo2 = očakávaný_výsledok
if(sscanf(line, "%f %c %f = %f", &firstNumber, &op, &secondNumber, &ans) != 4 || !is_operation(op)) {
printf("CHYBA\n"); printf("CHYBA\n");
continue; continue;
} }
double result = 0; float result = 0; // Premenná na uloženie výsledku operácie
// Vykonáme výpočet podľa operátora
if(op == '+') { if(op == '+') {
result = firstNumber + secondNumber; result = firstNumber + secondNumber; // Sčítanie
} else if(op == '-') { } else if(op == '-') {
result = firstNumber - secondNumber; result = firstNumber - secondNumber; // Odčítanie
} else if(op == '*') { } else if(op == '*') {
result = firstNumber * secondNumber; result = firstNumber * secondNumber; // Násobenie
} else { } else {
if(secondNumber != 0) { if(secondNumber != 0) { // Kontrola delenia nulou
result = firstNumber / secondNumber; result = firstNumber / secondNumber; // Delenie
} }
} }
result = roundf(result * 100) / 100; // Zaokrúhlenie výsledku na dve desatinné miesta
result = roundf(result * 100) / 100;
// Skontrolujeme, či sa vypočítaný výsledok zhoduje s očakávaným
if (ans == result) { if (ans == result) {
printf("OK\n"); printf("OK\n"); // Ak sa zhoduje, vypíšeme "OK"
} else { } else {
printf("ZLE\n"); printf("ZLE\n"); // Ak nie, vypíšeme "ZLE"
} }
} }
return 0; return 0; // Ukončenie programu
} }