Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.09;
Скачать: CL | DM;

Вниз

Вопрос   Найти похожие ветки 

 
Rouse_ ©   (2007-08-14 22:02) [0]

Разбираясь в архивах нашел тут примерчиков несколько, вопросы данные задавались несколько лет назад, интересно как их решит возмужавшее наседлление форума :)

Дано:
procedure TForm1.Button1Click(Sender: TObject);
var
 A, B, C: ShortInt;
 I: Integer;
begin
 A := 10;
 B := 100;
 C := 1;
 for I := 0 to A * B do Inc(C);
 ShowMessage(IntToStr(C));
end;


Вопрос, какое значение покажет ShowMessage?

Подсказка, не стоит запускать дельфи - включите сначала мозги...


 
TUser ©   (2007-08-14 22:09) [1]

Рискну ошибиться, два?


 
:((   (2007-08-14 22:11) [2]

Да при чем тут мозги?
Надо тупо счиатать, сколько будет в С после 1001 прибавления единицы, учитывая, что Shotint От -128 до 127.
Не мозги нужны, а чистая арифметика.


 
TUser ©   (2007-08-14 22:12) [3]

Слово не воробей, но числа в уме делить я не умею, факт :)


 
X9 ©   (2007-08-14 22:13) [4]

18?


 
Kostafey ©   (2007-08-14 22:14) [5]

> [2] :((   (14.08.07 22:11)

Обогнал.

Я сначала было подумал 1002, если честно.
Но посмотрев максимальное значение ShortInt (оказывается он всего 1байт)
понял, что у уме это точно не посчитать :)


 
X9 ©   (2007-08-14 22:15) [6]

-106?


 
Rouse_ ©   (2007-08-14 22:17) [7]

А калькулятор в инженерном режиме у всех уже отменили? :)


 
Kostafey ©   (2007-08-14 22:21) [8]

> понял, что у уме это точно не посчитать :)

А если...
1024 (10) = 10000000000 (2)
тогда
1002 (10) = 1111101001 (2)

и если взять только первые 7 получаем
1101001 (2) = -101001 (2) = -40 (10)

если не запутался в знаках


 
anton773 ©   (2007-08-14 22:21) [9]

-22


 
Kostafey ©   (2007-08-14 22:23) [10]

> А калькулятор в инженерном режиме у всех уже отменили? :
> )

Вроде вручную договорились...
впрочем вру это я похоже сам придумал,
речь шла только о Delphi


 
Kostafey ©   (2007-08-14 22:23) [11]

> -22

Сам считал?


 
TUser ©   (2007-08-14 22:45) [12]

> речь шла только о Delphi

То есть Лазарусом пользоваться было можно?


 
Rouse_ ©   (2007-08-14 22:46) [13]


> Да при чем тут мозги?
> Надо тупо счиатать, сколько будет в С после 1001 прибавления
> единицы

Правильно... следует сделать С интом :)

procedure TForm1.Button1Click(Sender: TObject);
var
 A, B, I: ShortInt;
 C: Integer;
begin
 A := 10;
 B := 100;
 C := 1;
 for I := 0 to A * B do
   Inc(C);
 ShowMessage(IntToStr(C));
end;


 
@!!ex ©   (2007-08-14 22:57) [14]

> Правильно... следует сделать С интом :)

НЕ понял....
Такой код тоже правильно работать не будет.
Предполагаюч то он даже не откомпилиться, поскольку A*B принимает значение, которое никогда не примет I.
Правда я не помню точно A*B обрежеться или преобразуется в Integer


 
Rouse_ ©   (2007-08-15 09:09) [15]


> поскольку A*B принимает значение, которое никогда не примет I.

Неверно - произойдет обрезание по диапазону...


 
Игорь Шевченко ©   (2007-08-15 09:46) [16]


> procedure TForm1.Button1Click(Sender: TObject);
> var
>  A, B, C: ShortInt;
>  I: Integer;
> begin
>  A := 10;
>  B := 100;
>  C := 1;
>  for I := 0 to A * B do Inc(C);
>  ShowMessage(IntToStr(C));
> end;


Убивать надо за такой код


 
Rouse_ ©   (2007-08-15 10:11) [17]

И не говори - сразу расстреливать :) Только смысл данного кода в другом :)


 
isasa ©   (2007-08-15 10:52) [18]

А в чем? :)
Показать, что 10*100 не влазит в ShortInt. :)


 
Rouse_ ©   (2007-08-15 11:26) [19]

Не показать, а определить степень внимательности программиста при тесте :)


 
Anatoly Podgoretsky ©   (2007-08-15 21:19) [20]

> Rouse_  (14.08.2007 22:02:00)  [0]

Тут не задачку надо решать, а код исправлять или хотя бы включить проверку диапазонов.


 
Anatoly Podgoretsky ©   (2007-08-15 21:20) [21]

> Rouse_  (15.08.2007 10:11:17)  [17]

Еще не хватало патроны на него тратить, дубинкой надо.



Страницы: 1 вся ветка

Текущий архив: 2007.09.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
15-1187144554
Slider007
2007-08-15 06:22
2007.09.09
С днем рождения ! 15 августа 2007 среда


1-1183391824
JanMihail
2007-07-02 19:57
2007.09.09
Как сэмулировать нажатие Enter в Edit е чужого окна?


15-1186914011
TesterMP3
2007-08-12 14:20
2007.09.09
от MP3 отрезать 1 минуту


2-1186412147
Melior
2007-08-06 18:55
2007.09.09
Работа с TCP/UDP и БД


15-1186539533
Slider007
2007-08-08 06:18
2007.09.09
С днем рождения ! 8 августа 2007 среда