#include #include #include #include #include bool check_spaces(const char* str) { int len = strlen(str); bool is_operator = false; bool is_operand = false; for (int i = 0; i < len; ++i) { char current_char = str[i]; if (current_char == ' ') { if (!is_operator && !is_operand) { return false; } } else if (current_char >= '0' && current_char <= '9') { is_operand = true; is_operator = false; } else if (current_char == '+' || current_char == '-' || current_char == '*' || current_char == '/') { is_operator = true; is_operand = false; } else { return false; } } if (!is_operand) { return false; } return true; } char* check_math_problem(const char* problem) { if (!check_spaces(problem)) { return "ZLE"; } if (strlen(problem) == 0) { return "CHYBA"; } double n1, n2, res; char sing, equel; if(sscanf(problem, "%lf %c %lf %c %lf", &n1, &sing, &n2, &equel, &res) != 5) { return "CHYBA"; } if (equel != '=') { return "CHYBA"; } double result; switch (sing) { case '+': result = n1 + n2; break; case '-': result = n1 - n2; break; case '*': result = n1 * n2; break; case '/': if (fabs(n2) < 1e-9) { return "ZLE"; } result = n1 / n2; break; default: return "CHYBA"; } if (fabs(result - res) < 0.01) { return "OK"; } else { return "ZLE"; } } int main() { char problem[100]; while (true) { fgets(problem, sizeof(problem), stdin); if (strlen(problem) <= 1) { break; } printf("%s\n", check_math_problem(problem)); } return 0; }