1с Массивы/циклы

1. novobranec 15.09.20 04:22 Сейчас в теме
Добрый день, возник вопрос по задаче, уже 2й день ломаю голову, не могу понять, как реализовать.
нам нужно 21 день добавить в массив, каждый 3й день имеет - да.

Пример:
1 день, Понедельник - нет
2 день, Вторник - нет
3 день, Среда - да
4 день, Четверг - нет
5 день, Пятница - нет
6 день, Суббота - да
и т.д, нужное кол-во 21 день.
помогите пожалуйста
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. novobranec 15.09.20 04:54 Сейчас в теме
(1)Если никого не затрудник, то напишите код, как это всё реализововаться должно пожалуйста, я не особо понимаю написание самого кода
2. areavel 15.09.20 04:44 Сейчас в теме
Число дня дели на 3, если ЦЕЛ(ЧислоДня/3) = ЧислоДня/3 тогда ДА
9. FatPanzer 15.09.20 09:01 Сейчас в теме
(2) А если надо метить начиная со 02.09, например? А если в массиве есть переход между месяцами, где 31 день?
Ваш вариант - совсем не вариант.
В задаче нет установки по поводу того, что считается точкой отсчета для "каждый третий".
ipoloskov; +1 Ответить
4. PerlAmutor 129 15.09.20 06:36 Сейчас в теме

&НаКлиенте
Процедура Команда1(Команда)

    Дни       = 21;
    Результат = Новый Массив(Дни, 2);
    НовыйДень = НачалоМесяца(ТекущаяДата())-Дата(1,1,1);

    Для Инд = 1 По Дни Цикл

        Результат[Инд - 1][0] = Дата(1,1,1) + НовыйДень;
        ТретийДень            = (Инд % 3) = 0;

        Результат[Инд - 1][1] = ТретийДень;

        НовыйДень = НовыйДень + 86400;

    КонецЦикла;

    Для Каждого ДанныеДня Из Результат Цикл

        Сообщить(СтрШаблон("%1 : %2", Формат(ДанныеДня[0], "ДФ=dd.MM.yyyy"), ДанныеДня[1]));

    КонецЦикла;

КонецПроцедуры

Показать
Прикрепленные файлы:
КаждыйТретийДень.epf
ipoloskov; novobranec; +2 Ответить
5. comptr 31 15.09.20 07:21 Сейчас в теме
Что должно быть элементом массива? Строка Да/Нет ? Булево Истина/Ложь ? Или может быть структура с полями "День" - строка, "Трейтий" - булево?
7. novobranec 15.09.20 07:53 Сейчас в теме
(5)все данные должны хранится в массиве
8. comptr 31 15.09.20 08:00 Сейчас в теме
(7) что значит "Все"? В каком виде? Какой тип данных у элемента массива? Строка, Булево, Число, Структура?
Прежде чем писать код, надо понять задачу.
10. FatPanzer 15.09.20 09:05 Сейчас в теме
(7) В одной "строчке" массива может хранится либо "Номер дня" (1,2,3,4...), либо "День недели" (понедельник, вторник...), либо пометка (да, нет).
Или речь все-таки не о массиве? Покажите задачу целиком так, как вам её задали. А не так, как вы её себе придумали.
11. novobranec 16.09.20 10:37 Сейчас в теме
(10)Написать программу. Программа должна считать количество протеина необходимое на период (ВсегоДней).

Во-первых, расчёт всегда начинается с понедельника. Это первый день.

Во-вторых, я принимаю протеин каждый третий день (значение хранить в переменной ЧастотаПриема, значение может меняться):
1 день, понедельник — нет,
2 день, вторник — нет,
3 день, среда — да,
4 день, четверг — нет,
5 день, пятница — нет,
6 день, суббота — да,
7 день, воскресенье — нет,
8 день, понедельник — нет,
9 день, вторник — да
и так далее.

В-третьих, известно, сколько протеина я съедаю в будние(ПротеинВБудни) и сколько в выходные дни (ПротеинВВыходные).

В-четвёртых, период задаётся целым числом, от одного до бесконечности (хотя планы дальше чем на месяц я обычно не строю).

Программа должна:
1. Хранить всю информацию по приему в массиве (с первого по последний день)
2. Сообщить количество необходимого протеина понедельно
(Неделя 1 – 500гр
Неделя 2 – 700гр
Неделя 3 – 600гр)
3. Сообщить сколько всего потребуется протеина. (Всего – 1800гр)
12. FatPanzer 16.09.20 10:53 Сейчас в теме
13. novobranec 16.09.20 10:55 Сейчас в теме
(12)да, всё верно, задание должно быть выполнено на платформе 1с
14. FatPanzer 16.09.20 11:05 Сейчас в теме
(13)
1. Так вот, массивы информацию не хранят. Информация хранится в БД в виде специализированных таблиц - справочников, документов, регистров и прочая. Массивы - это переменные наборы информации для работы в программном коде (в оперативной памяти).
2. ВСЮ информацию хранить в одном месте у вас не получится - у вас как минимум есть константы, которые хранить в массиве нет смысла - периодичность приема, два количества приема, глубина расчета (период приема)
3. Что такое ПротеинВБудние - это количество за один будний день, или за все будние дни?

Ну а теперь самое главное - покажите, что вы пытаетесь сделать и что именно у вас не получается? На каком этапе остановились?
15. RustamZz 16.09.20 11:27 Сейчас в теме
(14) Так из постановки ясно что это студенту дали задание, а константы, документы, регистры и прочая они еще не изучали. Вместо того что бы попробовать разобраться самому нашел 1С форум и выложил сюда в надежде, что сейчас ему тут код напишут и он таким образом станет программистом.
16. FatPanzer 16.09.20 11:33 Сейчас в теме
(15) Да я это с самого первого поста понял еще когда комментариев не было ))) Просто хочу мягко опустить человека на землю.
Если он собирается быть программистом, он пытается, у него что-то не получается и он обращается за помощью с опытным коллегам - это одно дело.
А если ему надо просто сдать лабу и программистом он быть не желает - чувак, это тебе на форумы, где лабы за деньги делают. Это не сюда.
17. novobranec 16.09.20 11:33 Сейчас в теме
(14) не совсем понимаю, как сделать так, чтобы выводило количество каждую неделю, выводит общее кол-во, а вот за неделю не могу понять как сделать
Понедельник - нет
Вторник - Нет
Среда - Да ( 100)
Четверг - Нет
Пятница - Нет
Суббота - да(200)
Воскресенье - нет
Понедельник - нет
Вторник - да(100)
и т.д вплоть до 21 дня
Прикрепленные файлы:
18. FatPanzer 16.09.20 11:38 Сейчас в теме
(17) Нужен еще один счетчик "ВсегоЗаНеделю". И счетчик недель нужен. Как только счетчик дней = 7, то сообщаем результат за прошедшую неделю, обнуляем его и начинаем считать вторую неделю.

Вот только массивов в вашем решении нет.
19. novobranec 16.09.20 11:46 Сейчас в теме
(18)Если честно сказать, то понял, что ничего не понял .-.
20. FatPanzer 16.09.20 11:55 Сейчас в теме
(19) У вас уже есть один счетчик "Всего", куда вы суммируете общее количество (Всего = Всего + Будни и т.д.). А вам нужен еще один счетчик, в котором вы будете накапливать еженедельное количество (ВсегоЗаНеделю = ВсегоЗаНеделю + Будни).
Как только вы посчитали воскресенье (неделя вся рассчитана) - необходимо вывести значение этого еженедельного счетчика, после чего обнулить его и продолжить считать с понедельника.
То есть общий счетчик калорий у вас постоянный, не обнуляется и сообщается только после всего просчета.
А недельный счетчик сообщается раз в неделю, после чего обнуляется.
user1841192; novobranec; +2 Ответить
21. novobranec 16.09.20 11:59 Сейчас в теме
(20)Понял, спасибо большое
22. novobranec 16.09.20 13:40 Сейчас в теме
23. novobranec 16.09.20 14:13 Сейчас в теме
Получилось сделать только так, не могу реализовать так, чтобы эти 3 цикла, были сделаны в 1
(20)
Прикрепленные файлы:
24. -AI- 16.09.20 14:19 Сейчас в теме
(23) нельзя внутри цикла менять переменную являющуюся счётчиком цикла "для от до"

PS и где здесь массивы?
25. Release 16.09.20 14:42 Сейчас в теме
(24) в общем-то можно, но это может сломать мозг и испортить нервы следующему, кто это будет сопровождать.

(23) Что-то вроде этого:
ВсегоДней = 21;

Для День = 1 По ВсегоДней Цикл
	НомерНедели	= Цел(День - 1) / 7) + 1;
	НомерДня	= День - 7 * (НомерНедели - 1);
	
	Если НомерДня > 5 Тогда
		Выражение = "ПротеинВНеделю" + НомерНедели + " = ПротеинВНеделю" + НомерНедели + " + ПротеинВВвыходные;";
		
		Выполнить(Выражение);
	Иначе
		Выражение = "ПротеинВНеделю" + НомерНедели + " = ПротеинВНеделю" + НомерНедели + " + ПротеинВБудни;";
		
		Выполнить(Выражение);
	КонецЕсли;
КонецЦикла;
Показать
novobranec; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот