Create Module.bsl (#182)

This commit is contained in:
TheDonrad
2021-03-14 18:47:15 +03:00
committed by GitHub
parent 85281425eb
commit 7d27d15c0d

View File

@@ -0,0 +1,54 @@
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура НайтиЧисло(Команда)
ИскомоеЧисло = 75;
Сообщение = Новый СообщениеПользователю;
КоличествоПопыток = БинарныйПоиск(ИскомоеЧисло);
Если КоличествоПопыток = Неопределено Тогда
ТекстСообщения = НСтр("ru = 'Число не входит в диапозон 1..100'");
Иначе
ШаблонСообщения = НСтр("ru = 'Число %1 найдено за %2 попыток'");
ТекстСообщения = СтрШаблон(ШаблонСообщения, ИскомоеЧисло, КоличествоПопыток);
КонецЕсли;
Сообщение.Текст = ТекстСообщения;
Сообщение.Сообщить();
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Функция БинарныйПоиск(ИскомоеЧисло)
Массив = Новый Массив;
Для Счетчик = 1 По 100 Цикл
Массив.Добавить(Счетчик);
КонецЦикла;
КоличествоПопыток = 0;
МинимальноеЧисло = Массив[0];
МаксимальноеЧисло = Массив[Массив.Количество() - 1];
Пока МинимальноеЧисло <= МаксимальноеЧисло Цикл
КоличествоПопыток = КоличествоПопыток + 1;
НайденноеЧисло = Цел((МинимальноеЧисло + МаксимальноеЧисло) / 2);
Если НайденноеЧисло = ИскомоеЧисло Тогда
Возврат КоличествоПопыток;
ИначеЕсли НайденноеЧисло > ИскомоеЧисло Тогда
МаксимальноеЧисло = НайденноеЧисло - 1;
Иначе // НайденноеЧисло < ИскомоеЧисло
МинимальноеЧисло = НайденноеЧисло + 1;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
#КонецОбласти