Skip to content

Commit 7d27d15

Browse files
authored
Create Module.bsl (egonSchiele#182)
1 parent 8528142 commit 7d27d15

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
2+
#Область ОбработчикиКомандФормы
3+
4+
&НаКлиенте
5+
Процедура НайтиЧисло(Команда)
6+
ИскомоеЧисло = 75;
7+
Сообщение = Новый СообщениеПользователю;
8+
9+
КоличествоПопыток = БинарныйПоиск(ИскомоеЧисло);
10+
11+
Если КоличествоПопыток = Неопределено Тогда
12+
ТекстСообщения = НСтр("ru = 'Число не входит в диапозон 1..100'");
13+
Иначе
14+
ШаблонСообщения = НСтр("ru = 'Число %1 найдено за %2 попыток'");
15+
ТекстСообщения = СтрШаблон(ШаблонСообщения, ИскомоеЧисло, КоличествоПопыток);
16+
КонецЕсли;
17+
18+
Сообщение.Текст = ТекстСообщения;
19+
Сообщение.Сообщить();
20+
КонецПроцедуры
21+
22+
#КонецОбласти
23+
24+
#Область СлужебныеПроцедурыИФункции
25+
26+
&НаКлиенте
27+
Функция БинарныйПоиск(ИскомоеЧисло)
28+
29+
Массив = Новый Массив;
30+
31+
Для Счетчик = 1 По 100 Цикл
32+
Массив.Добавить(Счетчик);
33+
КонецЦикла;
34+
35+
КоличествоПопыток = 0;
36+
МинимальноеЧисло = Массив[0];
37+
МаксимальноеЧисло = Массив[Массив.Количество() - 1];
38+
Пока МинимальноеЧисло <= МаксимальноеЧисло Цикл
39+
КоличествоПопыток = КоличествоПопыток + 1;
40+
НайденноеЧисло = Цел((МинимальноеЧисло + МаксимальноеЧисло) / 2);
41+
Если НайденноеЧисло = ИскомоеЧисло Тогда
42+
Возврат КоличествоПопыток;
43+
ИначеЕсли НайденноеЧисло > ИскомоеЧисло Тогда
44+
МаксимальноеЧисло = НайденноеЧисло - 1;
45+
Иначе // НайденноеЧисло < ИскомоеЧисло
46+
МинимальноеЧисло = НайденноеЧисло + 1;
47+
КонецЕсли;
48+
КонецЦикла;
49+
50+
Возврат Неопределено;
51+
52+
КонецФункции
53+
54+
#КонецОбласти

0 commit comments

Comments
 (0)