pvjc25/du3/program.c

58 lines
2.0 KiB
C
Raw Normal View History

2025-03-01 11:41:41 +00:00
#include <stdio.h>
#include <stdbool.h>
2025-03-01 11:47:34 +00:00
#include <math.h>
2025-03-01 11:41:41 +00:00
2025-03-01 11:53:58 +00:00
// Funkcia kontroluje, či zadaný znak je operátor (+, -, *, /)
2025-03-01 11:41:41 +00:00
bool is_operation(char op) {
return op == '+' || op == '-' || op == '*' || op == '/';
}
int main() {
2025-03-01 11:53:58 +00:00
char line[100]; // Pole na uloženie vstupného riadku
2025-03-01 11:41:41 +00:00
2025-03-01 11:53:58 +00:00
while(true) { // Nekonečný cyklus na spracovanie vstupu
// Načítame vstupný riadok (ak je NULL alebo prázdny, ukončíme cyklus)
2025-03-01 11:41:41 +00:00
if(fgets(line, sizeof(line), stdin) == NULL || line[0] == '\n') {
break;
}
2025-03-01 11:53:58 +00:00
float firstNumber = 0; // Premenná na prvé číslo
float secondNumber = 0; // Premenná na druhé číslo
float ans = 0; // Očakávaný výsledok
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)) {
2025-03-01 11:41:41 +00:00
printf("CHYBA\n");
2025-03-01 11:53:58 +00:00
continue;
2025-03-01 11:41:41 +00:00
}
2025-03-01 11:53:58 +00:00
float result = 0; // Premenná na uloženie výsledku operácie
2025-03-01 11:41:41 +00:00
2025-03-01 11:53:58 +00:00
// Vykonáme výpočet podľa operátora
2025-03-01 11:41:41 +00:00
if(op == '+') {
2025-03-01 11:53:58 +00:00
result = firstNumber + secondNumber; // Sčítanie
2025-03-01 11:41:41 +00:00
} else if(op == '-') {
2025-03-01 11:53:58 +00:00
result = firstNumber - secondNumber; // Odčítanie
2025-03-01 11:41:41 +00:00
} else if(op == '*') {
2025-03-01 11:53:58 +00:00
result = firstNumber * secondNumber; // Násobenie
2025-03-01 11:41:41 +00:00
} else {
2025-03-01 11:53:58 +00:00
if(secondNumber != 0) { // Kontrola delenia nulou
result = firstNumber / secondNumber; // Delenie
2025-03-01 11:41:41 +00:00
}
}
2025-03-01 11:47:34 +00:00
2025-03-01 11:53:58 +00:00
// Zaokrúhlenie výsledku na dve desatinné miesta
result = roundf(result * 100) / 100;
2025-03-01 11:47:34 +00:00
2025-03-01 11:53:58 +00:00
// Skontrolujeme, či sa vypočítaný výsledok zhoduje s očakávaným
2025-03-01 11:41:41 +00:00
if (ans == result) {
2025-03-01 11:53:58 +00:00
printf("OK\n"); // Ak sa zhoduje, vypíšeme "OK"
2025-03-01 11:41:41 +00:00
} else {
2025-03-01 11:53:58 +00:00
printf("ZLE\n"); // Ak nie, vypíšeme "ZLE"
2025-03-01 11:41:41 +00:00
}
}
2025-03-01 11:53:58 +00:00
return 0; // Ukončenie programu
2025-03-01 11:41:41 +00:00
}