![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Составить программу которая проверяла бы не приводит ли суммирование двух целых чисел A и B к переполнению(т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел. Напишите пожалуйста программу полностью. Заранее спасибо!!!! 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 var 
		
	
		
		
		
		
		
	
		
		
	
	
	x,y: Integer; begin if x+y>32767 then ShowMessage('Ошибка') else ShowMessage(IntToStr(x+y)) end; Запихнеш в процедуру и всё  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 1. В дельфи Integer уже давно в диапазоне -2147483648..2147483647 
		
	
		
		
		
		
		
	
		
		
	
	
	2. Надо еще обрабатывать ситуацию с отрицательным числом. а посему надо наверное так: Код: 
	var
x,y: Integer;
begin
if (x+y>High(Integer)) or (x+y<Low(Integer)) then
ShowMessage('Ошибка')
else
ShowMessage(IntToStr(x+y))
end; | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Цитата: 
	
 Этот код нерабочий. Т.к при попытке сложить x+y сумма записывается опять в Integer, а то что не влезло - обрезается. Поэтому данное условие всегда будет возвращать False; Необходимо вручную преобразовывать один из арументов в Int64 тогда и сумма будет Int64 Код: 
	if (Int64(x)+y>High(Integer)) or (Int64(x)+y<Low(Integer)) then
  ShowMessage('Ошибка')
 else
  ShowMessage(IntToStr(x+y)) | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Да с приведением суммы я чего-то не предусмотрел. Тут вы правы. 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Код: 
	Try
  X:= A + B;
  ShowMessage(IntToStr(X));
 Except
  ShowMessage('Overflow');
 end; |