|
Проблемы с циклом | ☑ | ||
---|---|---|---|---|
0
Peshalkin
24.09.20
✎
12:25
|
Код полностью работает, работает строка ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; Но если я добавляю Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл, то не складывается ДеньНачалаМесяца
Уже час бьюсь с кодом и не могу сделать так, чтобы всё складывалось, с ДняПервогоПриёма до КоличествоДней, и выводилось общее количество дней приёма и сколько всего было принято протеина. Помогите пожалуйста Иначе Для Каждого эл из ДеньНачала Цикл Если эл.Ключ = ДеньНачалаМесяца Тогда Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл Если эл.Ключ = 6 или эл.Ключ = 7 Тогда Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВВыходные); ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; Иначе Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВБудни); ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
1
Ёпрст
24.09.20
✎
12:35
|
больше кода
|
|||
2
vova1122
24.09.20
✎
12:35
|
1. Реквизиты ДеньПервогоПриёма, ДеньНачалаМесяца для рабочих и выходных одни и те же. так задумано?
2. ДеньНачалаМесяца проверяется до цикла. В цикле меняется. Совсем непонятно из сообщения что и куда нужно складывать.... |
|||
3
МихаилМ
24.09.20
✎
12:36
|
ДеньПервогоПриёма = 0
|
|||
4
Ёпрст
24.09.20
✎
12:36
|
вообще не ясно че ты делаешь этим кодом, и зачем сдвигаешь ДеньНачалаМесяца
|
|||
5
Peshalkin
24.09.20
✎
12:43
|
(2) ДеньНачала(Соответствие) которое проверяет по ключу, если введено(1-7), выводит соответствующий день недели, ДеньПервогоПриёма(Реквизит, с какого числа начинается приём), КоличествоДнейВМесяце (Общее количество дней за которое нужно произвести расчет, Реквизит), ДеньНачалаМесяца (Реквизит с днями недели), КоличествоПротеинаВВыходные(Реквизит), ВБудни тоже реквизит, Частота приёма(Реквизит, с каким промежутком принимается протеин)
|
|||
6
Peshalkin
24.09.20
✎
12:48
|
Изначально я проверяю обходом соответствия, равен ли ключ, введённому значению в ДеньНачалаМесяца, после цикл ДеньПервогоПриёма < КоличествоДнейВМесяце(Нужно рассчитать сколько протеина было принято всего, сколько было принято за дни, и какой день недели), Но цикл пока не даёт выполниться действию ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма;
А если переместить цикл пока выше, то он просто будет зацикливаться, Мне сейчас нужно получить общее количество протеина, общее количество дней и Чтобы просчитывая Дни, у меня выводились данные за каждый день, допустим: 9 Число (Понедельник): 200гр. 12 Число (Четверг): 200гр. 15 Число (Воскресенье): 100 гр |
|||
7
vova1122
24.09.20
✎
12:49
|
(5) Опишите полностью задачу, что, откуда и куда должно складываться. Травильно заданный вопрос содержит половину ответа
|
|||
8
Ёпрст
24.09.20
✎
12:50
|
(6) у вас пока в коде каша.
Объясните задачу целиком |
|||
9
Peshalkin
24.09.20
✎
12:54
|
Иначе
Для Каждого эл из ДеньНачала Цикл //ДеньНачала - Соответствие с неделями (1-7 Ключ) (Понедельник-Воскресенье Значение) Если эл.Ключ = ДеньНачалаМесяца Тогда Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл //ДеньПервогоПриёма и КоличествоДнейВМесяца - Реквизит, куда вводятся данные допустим 10 и 30 Если эл.Ключ = 6 или эл.Ключ = 7 Тогда //тут я узнаю если суббота и воскресенье, то плюсую КоличествоПротеинаВВыходные(Реквизит, произвольно указать число) Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВВыходные); //Вывожу эти значения ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; // ЧастотаПриёма(Реквизит, промежуток дней, которые не учитываются, если ДеньПерПриёма - 10, то плюсуем Частоту и получается 13 день след будет считать ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; //ДеньНачалаМесяца это Реквизит с неделями (1-7 Ключ) (Понедельник-Воскресенье Значение) Иначе Сообщить(""+ДеньПервогоПриёма+" Число "+"("+эл.Значение+"): "+КоличествоПротеинаВБудни); //Коилчество протеина в будни Тоже реквизит ДеньПервогоПриёма = ДеньПервогоПриёма + ЧастотаПриёма; ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
10
Peshalkin
24.09.20
✎
12:58
|
Мне нужно вывести дни
Пример: 10 Число (Среда): 200гр 13 Число (Суббота): 100гр 16 Число (Вторник): 200гр Вплоть до того числа, до которого будет указано в реквизите КоличествоДнейВМесяц После Вывести Всего Принято протеина за все дни, которые были выведены программой и Всего дней приема протеина, пока их я не заносил в код, по причине, что у меня работает всё, но не прибавляется неделя если я изначально задал Вторник, то у меня на всех числах будет вторник, если я Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл убераю, то всё плюсуется, но всего-лишь 2-3 раза, пока не выдаст значение В Выходные дни и Будни |
|||
11
Peshalkin
24.09.20
✎
13:13
|
Так что есть кто поможет или подскажет, как цикл пока изменить или как его переместить, чтобы всё работало?
|
|||
12
MyNick
24.09.20
✎
13:28
|
(11) тебе говорят, что нужна бизнес задача. Процесс.
Вероятно, что ты не с того заходишь, и придется плодить еще много веток, чтобы ее решить (с непонятным результатом) |
|||
13
Ёпрст
24.09.20
✎
13:34
|
(9)
ДеньНачалаМесяца - это что ? Число ? |
|||
14
Ёпрст
24.09.20
✎
13:34
|
в соотвтетствии твоём, значения, это просто строки -понедельник ?
|
|||
15
Ёпрст
24.09.20
✎
13:35
|
ДеньПервогоПриёма - это что ? Чилсло ? Дата ?
|
|||
16
Peshalkin
24.09.20
✎
13:43
|
(15) КоличествоДнейВМесяце – Число (2, 0)
Количество дней в рассчитываемом месяце ДеньНачалаМесяца – Число (1, 0) День недели с которого начался месяц (1 – ПН, 2 – ВТ, 3 – СР …. 7 - ВС) КоличествоПротеинаВБудни – Число (3, 0) Количество протеина, принимаемое в будни (ПН-ПТ) КоличествоПротеинаВВыходные – Число (3, 0) Количество протеина, принимаемое в выходные (СБ-ВС) ДеньПервогоПриема – Число (2, 0) День месяца, с которого человек начал прием протеина (Например, с 15 для месяца) ЧастотаПриема – Число (2, 0) Интервал приема протеина в днях ПриемСПервогоДня– Булево Признак того, что человек начал прием протеина в день первого приема. |
|||
17
Peshalkin
24.09.20
✎
13:44
|
(14) ДеньНачала = Новый Соответствие;
ДеньНачала.Вставить(1, "Понедельник"); ДеньНачала.Вставить(2, "Вторник"); ДеньНачала.Вставить(3, "Среда"); ДеньНачала.Вставить(4, "Четверг"); ДеньНачала.Вставить(5, "Пятница"); ДеньНачала.Вставить(6, "Суббота"); ДеньНачала.Вставить(7, "Воскресенье"); |
|||
18
Peshalkin
24.09.20
✎
13:46
|
Если человек найден необходимо произвести расчёт принимаемого протеина на месяц и вывести информацию через сообщить.
Что необходимо выводить пользователю: 1. Общее количество принятого протеина в граммах. 2. Количество приемов в днях 3. День недели и количество приема с количеством протеина. (Например: 15 число (среда): 100гр.) |
|||
19
Peshalkin
24.09.20
✎
14:01
|
Проблема в том, что программа зацикливается из-за цикла Пока ДеньПервогоПриёма < КоличествоДнейВМесяце Цикл если его вписать выше,а если его оставить на том же месте, то просто не суммируется ДеньНачалаМесяца, он при выводе всех нужных данных, остаётся одинаковый
Пример: 3 Число (Понедельник): 200 6 Число (Понедельник): 200 9 Число (Понедельник): 200 12 Число (Понедельник): 200 Вплоть до введённого в Реквизите(КоличествоДнейВМесяце), а должно быть - Пример: 3 Число (Понедельник): 200 6 Число (Четверг): 200 9 Число (Воскресенье): 100 12 Число (Среда): 200 |
|||
20
Ёпрст
24.09.20
✎
14:18
|
(19) вот эта шляпа всё портит
ДеньНачалаМесяца = ДеньНачалаМесяца + ЧастотаПриёма;/ |
|||
21
Ёпрст
24.09.20
✎
14:18
|
ибо в ДеньНачалаМесяца у тебя должны быть числа от 1 до 7, насколько я понял из твоего описания
|
|||
22
Ёпрст
24.09.20
✎
14:19
|
зачем ты потом к нему что-то прибавляешь, непонятно
|
|||
23
Peshalkin
24.09.20
✎
14:27
|
(22) так, если я не прибавлю к ней Частота приёма, у меня будет так же выводиться постоянно (Понедельник-вс), одно значение,Ю которое было в первом сообщении
|
|||
24
DTX 4th
24.09.20
✎
14:30
|
(23)
1. Какую величину пытаешь посчитать?) Если 1-7 - это дни недели, то что ты хочешь посчитать? 2. И для какой величины? Для даты? |
|||
25
Йохохо
24.09.20
✎
14:34
|
(23) тупо посчитай даты приема и выводи остаток по модулю 7, всё
|
|||
26
Йохохо
24.09.20
✎
14:36
|
модулю 7 + 1 по ISO8601
|
|||
27
Peshalkin
24.09.20
✎
14:36
|
(24) я уже пробовал делать ЧастотуПриёма в 5 дней и выводится всё отлично, но не могу в цикл запихнуть, расчитывалось всё вот
3 Число (Понедельник): 200 6 Число (Четверг): 200 9 Число (Воскресенье): 100 12 Число (Среда): 200 День недели всегда отстаётся 1х1, из-за того, что цикл находится ниже - Если эл.Ключ = ДеньНачалаМесяца Тогда |
|||
28
МихаилМ
24.09.20
✎
14:55
|
||||
29
Ёпрст
24.09.20
✎
15:31
|
Ага.. его.. там она, а тут он..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |