diff --git a/du3/program.c b/du3/program.c new file mode 100644 index 0000000..a7f0554 --- /dev/null +++ b/du3/program.c @@ -0,0 +1,30 @@ +#include +#include +#include + +#define MAX_LEN 100 + +const char* evaluate_expression(char *expression){ + double num1, num2, result, computed_result; + char op; + + if(sscanf(expression, " %lf %c %lf = %lf ", &num1, &op, &num2, &result) != 4) return "CHYBA"; + + switch(op){ + case '+': computed_result = num1 + num2; break; + case '-': computed_result = num1 - num2; break; + case '*': computed_result = num1 * num2; break; + case '/': if (num2 == 0) return "CHYBA"; computed_result = num1 / num2; break; + default: return "CHYBA"; + } + + return (round(computed_result * 100) / 100 == round(result * 100) / 100) ? "OK" : "ZLE"; +} + +int main(){ + char line[MAX_LEN]; + while(fgets(line, sizeof(line), stdin) && line[0] != '\n'){ + printf("%s\n", evaluate_expression(line)); + } + return 0; +}