ex-05: Improve edge case handling
This commit is contained in:
parent
7760c66960
commit
9977715ddc
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user