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); | ||||
|     break; | ||||
|   }; | ||||
| 
 | ||||
|   if (result > INT_MAX) { | ||||
|     printf("%.1e\n", result); | ||||
|     result = num1 / num2; | ||||
|     if (result < 0) { | ||||
|       result = ceil(num1 / num2); | ||||
|     } else { | ||||
|       result = floor(num1 / num2); | ||||
|     } | ||||
|     break; | ||||
|   } | ||||
| 
 | ||||
|   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
	 Tomáš Kléger
						Tomáš Kléger