diff --git a/a1/program.c b/a1/program.c index c5c54e1..1cb7384 100644 --- a/a1/program.c +++ b/a1/program.c @@ -4,49 +4,18 @@ #include #include - -char* check_math_problem(const char* problem) -{ - - //char* copy; - 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); +char* check_math_problem(const char* problem) { + if (strlen(problem) == 0) { 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); + + if(sscanf(problem, "%lf %c %lf %c %lf", &n1, &sing, &n2, &equel, &res) != 5) { return "CHYBA"; } - // printf("%lf%c%lf%c%lf", n1, sing, n2, equel, res); - //return "1234"; - - double result; switch (sing) { case '+': @@ -60,34 +29,27 @@ char* check_math_problem(const char* problem) break; case '/': if (fabs(n2) < 1e-9) { - free(copy); return "ZLE"; } result = n1 / n2; break; default: - free(copy); return "CHYBA"; } - free(copy); - + if (fabs(result - res) < 0.01) { return "OK"; } else { return "ZLE"; } - - return "0"; - } int main() { char problem[100]; - while (true) { fgets(problem, sizeof(problem), stdin); - if (strlen(problem) == 1) { + if (strlen(problem) <= 1) { break; } printf("%s\n", check_math_problem(problem));