Имя: Пароль:
1C
1С v8
Как проще всего найти пропущенное число в последовательности чисел?
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) интересно было бы посмотреть
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.