ex-05: Improve edge case handling
This commit is contained in:
		
							parent
							
								
									7760c66960
								
							
						
					
					
						commit
						9977715ddc
					
				| @ -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; | ||||||
|  |     if (result < 0) { | ||||||
|  |       result = ceil(num1 / num2); | ||||||
|  |     } else { | ||||||
|  |       result = floor(num1 / num2); | ||||||
|  |     } | ||||||
|     break; |     break; | ||||||
|   }; |   } | ||||||
| 
 | 
 | ||||||
|   if (result > INT_MAX) { |   if (fabs(result - (int)result) < 1e-9) { | ||||||
|     printf("%.1e\n", result); |  | ||||||
|   } else { |  | ||||||
|     printf("%ld\n", (long)result); |     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