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