Create Module.bsl (#182)
This commit is contained in:
54
01_introduction_to_algorithms/1C/Module.bsl
Normal file
54
01_introduction_to_algorithms/1C/Module.bsl
Normal file
@@ -0,0 +1,54 @@
|
||||
|
||||
#Область ОбработчикиКомандФормы
|
||||
|
||||
&НаКлиенте
|
||||
Процедура НайтиЧисло(Команда)
|
||||
ИскомоеЧисло = 75;
|
||||
Сообщение = Новый СообщениеПользователю;
|
||||
|
||||
КоличествоПопыток = БинарныйПоиск(ИскомоеЧисло);
|
||||
|
||||
Если КоличествоПопыток = Неопределено Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Число не входит в диапозон 1..100'");
|
||||
Иначе
|
||||
ШаблонСообщения = НСтр("ru = 'Число %1 найдено за %2 попыток'");
|
||||
ТекстСообщения = СтрШаблон(ШаблонСообщения, ИскомоеЧисло, КоличествоПопыток);
|
||||
КонецЕсли;
|
||||
|
||||
Сообщение.Текст = ТекстСообщения;
|
||||
Сообщение.Сообщить();
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция БинарныйПоиск(ИскомоеЧисло)
|
||||
|
||||
Массив = Новый Массив;
|
||||
|
||||
Для Счетчик = 1 По 100 Цикл
|
||||
Массив.Добавить(Счетчик);
|
||||
КонецЦикла;
|
||||
|
||||
КоличествоПопыток = 0;
|
||||
МинимальноеЧисло = Массив[0];
|
||||
МаксимальноеЧисло = Массив[Массив.Количество() - 1];
|
||||
Пока МинимальноеЧисло <= МаксимальноеЧисло Цикл
|
||||
КоличествоПопыток = КоличествоПопыток + 1;
|
||||
НайденноеЧисло = Цел((МинимальноеЧисло + МаксимальноеЧисло) / 2);
|
||||
Если НайденноеЧисло = ИскомоеЧисло Тогда
|
||||
Возврат КоличествоПопыток;
|
||||
ИначеЕсли НайденноеЧисло > ИскомоеЧисло Тогда
|
||||
МаксимальноеЧисло = НайденноеЧисло - 1;
|
||||
Иначе // НайденноеЧисло < ИскомоеЧисло
|
||||
МинимальноеЧисло = НайденноеЧисло + 1;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
Reference in New Issue
Block a user