|
Как проще всего найти пропущенное число в последовательности чисел?
| ☑ |
0
MrBoss
08.06.15
✎
00:19
|
Например есть ряд чисел:
1, 2, 3, 4, 4, 4, 6, 7, 7, 8, 9 и т. д.
Как вычислить что не хватает числа 5?
|
|
1
Ma3eIIa
08.06.15
✎
00:25
|
СтрПоиска = "1, 2, 3, 4, 4, 4, 6, 7, 7, 8, 9";
чисел = 10;
НетЧисла = Ложь;
Для ы=0 по чисел цикл
ЕстьЧисло = найти(СтрПоиска,ы);
Если Не ЕстьЧисло Тогда
Прервать;
НетЧисла = Истина;
КонецЕсли;
КонецЦикла;
|
|
2
orefkov
08.06.15
✎
00:31
|
отсортировать и перебрать.
Если ТекЧисло > ПрошЧисло + 1 Тогда
Сообщить("Потеряли всё между " + ПрошЧисло + " и " + ТекЧисло);
|
|
3
H A D G E H O G s
08.06.15
✎
00:36
|
Пусть массив отсортирован, тогда:
МинимальныйИнкримент=МассивЧисел[МассивЧисел.Количество()-1];
Для Счетчик=0 По МассивЧисел.Количество()-2 Цикл
ТекущийИнкремент=МассивЧисел[Счетчик+1]-МассивЧисел[Счетчик];
Если ТекущийИнкремент=0 Тогда
Продолжить;
КонецЕсли;
МинимальныйИнкримент=мин(МинимальныйИнкримент,ТекущийИнкремент);
КонецЦикла;
Для Счетчик=0 По МассивЧисел.Количество()-2 Цикл
ТекущийИнкремент=МассивЧисел[Счетчик+1]-МассивЧисел[Счетчик];
Если ТекущийИнкремент=0 Тогда
Продолжить;
КонецЕсли;
Если ТекущийИнкремент>МинимальныйИнкримент Тогда
Сообщить("Пропущено число "+(МассивЧисел[Счетчик]+МинимальныйИнкримент));
Прервать;
КонецЕсли;
КонецЦикла;
|
|
4
hhhh
08.06.15
✎
00:38
|
(0) шо, опять?
|
|
5
MrBoss
08.06.15
✎
01:00
|
(1) Спасибо, вполне просто и годно)))
|
|
6
MrBoss
08.06.15
✎
01:02
|
(4) Чего?)
|
|
7
MrBoss
08.06.15
✎
01:03
|
(3) вариант в (1) по проще и вполне рабочий
|
|
8
asady
08.06.15
✎
08:58
|
(0) ИМХО запросом это можно сделать
|
|
9
Ildarovich
08.06.15
✎
13:20
|
(8) интересно было бы посмотреть
|
|