#include #include #include #include #include char* check_math_problem(const char* problem) { char* result_str = (char*)malloc(10 * sizeof(char)); if (result_str == NULL) { fprintf(stderr, "Error with memory\n"); exit(EXIT_FAILURE); } //char* copy = strcmp(problem); char* copy = (char*)malloc((strlen(problem) + 1) * sizeof(char)); strcpy(copy, problem); if (copy == NULL) { fprintf(stderr, "Error with memory\n"); exit(EXIT_FAILURE); } char* src = copy; char* dst = copy; while (*src != '\0') { if (*src != ' ') { *dst++ = *src; } src++; } *dst = '\0'; if (strlen(copy) == 0) { free(copy); return "CHYBA"; } double n1, n2, res; char sing, equel; if(sscanf(copy, "%lf%c%lf%c%lf", &n1, &sing, &n2, &equel, &res) !=5) { free(copy); return "CHYBA"; } // printf("%lf%c%lf%c%lf", n1, sing, n2, equel, res); //return "1234"; 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) { free(copy); return "ZLE"; } result = n1 / n2; break; default: free(copy); return "CHYBA"; } if (fabs(result - res) < 0.01) { strcpy(result_str, "OK"); } else { strcpy(result_str, "ZLE"); } free(copy); return result_str; } 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; }