Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.039 c
15-1187168756
Romkin
2007-08-15 13:05
2007.09.09
Нужен компонент или идея


2-1187001601
Quart
2007-08-13 14:40
2007.09.09
Blob


2-1187575002
Alex_AA
2007-08-20 05:56
2007.09.09
Как открыть файл .doc, на который установлен пароль?


2-1187124924
Евгений Р.
2007-08-15 00:55
2007.09.09
ввод tDateTimePicker


15-1186614254
Германн
2007-08-09 03:04
2007.09.09
Америка - страна адвокатов!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский