ex-05: Improve edge case handling

This commit is contained in:
Tomáš Kléger 2025-10-20 21:05:54 +02:00
parent 7760c66960
commit 9977715ddc

View File

@ -8,7 +8,8 @@ int main() {
double num1, num2;
char op;
if (scanf(" %lf %c %lf = ", &num1, &op, &num2) != 3) {
char equal_sign;
if (scanf("%lf %c %lf %c", &num1, &op, &num2, &equal_sign) != 4 || equal_sign != '=') {
printf("Nespravny vstup.\n");
return EXIT_FAILURE;
}
@ -35,13 +36,18 @@ int main() {
result = num1 * num2;
break;
case '/':
result = floor(num1 / num2);
result = num1 / num2;
if (result < 0) {
result = ceil(num1 / num2);
} else {
result = floor(num1 / num2);
}
break;
};
}
if (result > INT_MAX) {
printf("%.1e\n", result);
} else {
if (fabs(result - (int)result) < 1e-9) {
printf("%ld\n", (long)result);
} else {
printf("%.12g\n", result);
}
}