|
Разделить период на порции | ☑ | ||
---|---|---|---|---|
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
|
Период в обработке кратный месяцу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |