File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed
01_introduction_to_algorithms/1C Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change
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
+ #КонецОбласти
You can’t perform that action at this time.
0 commit comments