|   |   | 
| 
 | Разделить период на порции | ☑ | ||
|---|---|---|---|---|
| 0
    
        Franchiser 03.04.19✎ 23:49 | 
        Как разделить период примерно на равные порции.
 Например , период 01.02.19 по 28.02.19. Вариант 1 Средний размер порции ОКР(28/10 ,0) =3 Получаем периоды: 01.02-03.02 (3 дня) 04.02-06.02 (3 дня) ... 28.02-28.02 (1 день) Вариант 2 Цел(28/10) = 2 Получаем периоды: 01.02-02.02 (2 дня) 03.02-04.02 (2 дня) ... 19.02-28.02 (11 дней) Далее берём 55 дней Вариант 1. Получим деление на периоды: По 6 дней, Последний период 1 день | |||
| 1
    
        МихаилМ 04.04.19✎ 01:57 | 
        нод     | |||
| 2
    
        Chameleon1980 04.04.19✎ 05:03 | 
        32     | |||
| 3
    
        Web00001 04.04.19✎ 06:00 | 
        (0)Продолжайте наблюдение     | |||
| 4
    
        Жан Пердежон 04.04.19✎ 06:37 | 
        (0) да     | |||
| 5
    
        Bigbro 04.04.19✎ 07:14 | 
        ну если 6 и 1, а также 11 и 2 можно считать "примерно равными", то норм.
 но вообще задача для 8 класса средней школы, или в каком там сейчас начинают информатику преподавать? | |||
| 6
    
        Franchiser 04.04.19✎ 09:24 | 
        Ладно вы ничего не поняли.
 Вариант 1 я не могу всегда применять, хотя он даёт лучшие результаты на месяце. Например, если дней 25, то Получается размер порции с округлением 3. Но получается перебор. Мне нужно получить ровно 10 порций а тут получается только 9. | |||
| 7
    
        Жан Пердежон 04.04.19✎ 09:27 | 
        (6) намекаю, в (0) ты ничего не спрашивал     | |||
| 8
    
        Bigbro 04.04.19✎ 09:28 | 
        (6) так как тебя понять если ты вместо внятного формулирования задачи пишешь какую то пургу с вариантами решения непонятно чего, а потом спрашиваешь как лучше? невозможно на это ответить если не знать в чем вопрос.
 и судя по приведенным примерам ты тоже исходную задачу не понимаешь | |||
| 9
    
        Franchiser 04.04.19✎ 09:31 | 
        Мне нужно разбить укащанный период (месяц, квартал и ТД) на форме на 10 равных порций для многопоточной загрузки.
 Иногда хороший результат выдает вариант 1, иногда вариант 2. При количестве дней 15, 25, 35 и тд вариант 1 не вернёт 10 порций | |||
| 10
    
        Bigbro 04.04.19✎ 09:33 | 
        (9) даю подсказку - округление суммы не равно сумме округлений. иногда сильно не равно.     | |||
| 11
    
        Жан Пердежон 04.04.19✎ 09:34 | 
        Вот тебе недоответ на твой недовопрос:
 Размер = 28; Порций = 10; Р1 = Цел(Размер/Порций) = 2; КР2 = Ост(Размер;Порций) = 8; Итого: КР2 отрезков размера Р1+1 (Порций-КР2) отрезков размера Р1 | |||
| 12
    
        Franchiser 04.04.19✎ 09:36 | 
        Первое значение массива всегда начало периода, последнее значение - конец периода, мне нужно рассчитать  8 промежуточных значений.     | |||
| 13
    
        Zmich 04.04.19✎ 09:38 | 
        Можно высчитывать среднее (округленное или целая часть) на каждом этапе. Тогда длина периодов будет примерно одинакова. Например, для случая 55 дней:
 1). Окр(55/10) = 6 2). Окр((55-6)/9) = Окр(49/9) = 5 3). Окр((49-5)/8) = Окр(44/8) = 6 и т.д. | |||
| 14
    
        Franchiser 04.04.19✎ 09:39 | 
        Вот такой результат нужен:
 Расчет: февраль/март 1 4 7 10 13 16 19 22 25 28 28/31 | |||
| 15
    
        Franchiser 04.04.19✎ 09:42 | 
        (13) отлично, нужно попробовать)     | |||
| 16
    
        Bigbro 04.04.19✎ 10:19 | 
        (13) ну вот, лишил человека возможности подумать. подсказка уже была ..     | |||
| 17
    
        Bigbro 04.04.19✎ 10:21 | 
        (14) у тебя 9 периодов, а ты говорил надо 10.
 или в феврале в твоей вселенной 31 день? | |||
| 18
    
        Franchiser 04.04.19✎ 10:37 | 
        (17)
 1. 1-4 2. 4-7 3. 7-10 4. 10-13 5. 13-16 6. 16-19 7. 19-22 8. 22-25 9 25-28 10. 28-28 | |||
| 19
    
        Franchiser 04.04.19✎ 10:37 | 
        Если март
 То 10. 28-31 | |||
| 20
    
        Bigbro 04.04.19✎ 10:42 | 
        любопытный период длиной сколько? ноль дней?
 во сколько раз ноль отличается от остальных периодов длиной 3 дня? | |||
| 21
    
        Bigbro 04.04.19✎ 10:44 | 
        и какое количество событий может произойти за период длиной в ноль? ) 
 и зачем нужен такой период, если он фактически - пустой? почему бы не добавить еще 10 или тысячу или любое другое число таких же нулевых периодов к разбиению - что это изменит? | |||
| 22
    
        Franchiser 04.04.19✎ 11:19 | 
        (21) правая граница не включается.
 10. 28.02.19 00:00:00 - 28.02.19 23:59:59 | |||
| 23
    
        Franchiser 04.04.19✎ 11:49 | 
        Получилось:
 // Вставить содержимое обработчика. КоличествоПотоков = 10; ОбщееКоличество = (НачалоДня(Период.ДатаОкончания)-НачалоДня(Период.ДатаНачала))/86400+1; Сообщить("Всего дней "+ОбщееКоличество); ОстатокДней = ОбщееКоличество; ОстатокПорций = КоличествоПотоков; ГраницаПредыдущейПорции = Период.ДатаНачала; ОбработаноДней = 0; Для Сч=1 по КоличествоПотоков Цикл РазмерПорции = Окр(ОстатокДней/ОстатокПорций,0); НижняяГраница = ГраницаПредыдущейПорции; ВерхняяГраница = НижняяГраница + РазмерПорции*86400; Если Сч=1 Тогда Сообщить("_ По " +ВерхняяГраница +" " +РазмерПорции); ИначеЕсли Сч=КоличествоПотоков Тогда Сообщить("_С " + НижняяГраница +" " +РазмерПорции); Иначе Сообщить("С " + НижняяГраница + " По " +ВерхняяГраница +" " +РазмерПорции); КонецЕсли; ОстатокДней = ОстатокДней - РазмерПорции; ОстатокПорций = ОстатокПорций - 1; ГраницаПредыдущейПорции = ВерхняяГраница; ОбработаноДней = ОбработаноДней + РазмерПорции; КонецЦикла; Сообщить("Обработано дней "+ОбработаноДней); | |||
| 24
    
        Mikeware 04.04.19✎ 11:51 | 
        чот сразу вспомнился товарищ Брезенхем...     | |||
| 25
    
        Bigbro 04.04.19✎ 12:16 | 
        а теперь попробуй для КоличествоПотоков = 11     | |||
| 26
    
        Franchiser 04.04.19✎ 12:29 | 
        (25) Нормально работает для 11     | |||
| 27
    
        Franchiser 04.04.19✎ 12:29 | 
        Период в обработке кратный месяцу     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |