ex-05: Improve edge case handling
This commit is contained in:
parent
9cab9ed2e6
commit
9e81c351e3
@ -8,7 +8,8 @@ int main() {
|
|||||||
|
|
||||||
double num1, num2;
|
double num1, num2;
|
||||||
char op;
|
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");
|
printf("Nespravny vstup.\n");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
@ -35,13 +36,18 @@ int main() {
|
|||||||
result = num1 * num2;
|
result = num1 * num2;
|
||||||
break;
|
break;
|
||||||
case '/':
|
case '/':
|
||||||
result = floor(num1 / num2);
|
result = num1 / num2;
|
||||||
break;
|
if (result < 0) {
|
||||||
};
|
result = ceil(num1 / num2);
|
||||||
|
|
||||||
if (result > INT_MAX) {
|
|
||||||
printf("%.1e\n", result);
|
|
||||||
} else {
|
} else {
|
||||||
|
result = floor(num1 / num2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fabs(result - (int)result) < 1e-9) {
|
||||||
printf("%ld\n", (long)result);
|
printf("%ld\n", (long)result);
|
||||||
|
} else {
|
||||||
|
printf("%.12g\n", result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user