diff --git a/du4/program.c b/du4/program.c index 44cd1a9..426efd9 100644 --- a/du4/program.c +++ b/du4/program.c @@ -77,16 +77,28 @@ int main() { LABEL: switch(operation){ case 1: - printf("%s\n", (roundf(strtof(number1, &ptr) + strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) + strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + if(strtof(number1, &ptr) != roundf(strtof(number2, &ptr))) + printf("%s\n", (roundf(strtof(number1, &ptr) + strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) + strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + else + printf("%s\n", (strtof(number1, &ptr) + strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) + strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); break; case 2: - printf("%s\n", (roundf(strtof(number1, &ptr) - strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) - strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + if(strtof(number1, &ptr) != roundf(strtof(number2, &ptr))) + printf("%s\n", (roundf(strtof(number1, &ptr) - strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) - strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + else + printf("%s\n", (strtof(number1, &ptr) - strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) - strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); break; case 3: - printf("%s\n", (roundf(strtof(number1, &ptr) * strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) * strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + if(strtof(number1, &ptr) != roundf(strtof(number2, &ptr))) + printf("%s\n", (roundf(strtof(number1, &ptr) * strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) * strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + else + printf("%s\n", (strtof(number1, &ptr) * strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) * strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); break; case 4: - printf("%s\n", (roundf(strtof(number1, &ptr) / strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) / strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + if(strtof(number1, &ptr) != roundf(strtof(number2, &ptr))) + printf("%s\n", (roundf(strtof(number1, &ptr) / strtof(number2, &ptr)*100)/100 > strtof(result, &ptr) - 0.001 && roundf(strtof(number1, &ptr) / strtof(number2, &ptr)*100)/100 < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); + else + printf("%s\n", (strtof(number1, &ptr) / strtof(number2, &ptr) > strtof(result, &ptr) - 0.001 && strtof(number1, &ptr) / strtof(number2, &ptr) < strtof(result, &ptr) + 0.001) ? "OK" : "ZLE"); break; default: printf("CHYBA\n");