• Теория
  • Теория

Циклы: Запасы протеина

Пришло время для собственной программы, которая поможет Кексу правильно запастись протеином на любой период, например, на 15 или на 25 дней.

Программа усложняется тем, что Кекс принимает протеин не каждый день, а раз в три дня, да ещё и разное количество в будние дни и в выходные. Впрочем, вот техническое задание, написанное его лапой:

Мяу! Программа должна считать количество протеина необходимое на период.

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

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

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

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

Программа должна возвращать общее количество протеина за период, записанное в переменную total.

Количество дней хранится в переменной days, количество протеина для буднего дня — в переменной workDayAmount, для выходного — в переменной weekendAmount, период получения протеина — в переменной period, а результат необходимо записать в переменную total.

Конечно, в этой программе будет удобно использовать цикл, в котором будет накапливаться количество протеина.

В этом цикле будут две сложные проверки: как определить n-ый по счёту день и как отделить выходные от будних. Если будет сложно разобраться, откройте блок с подсказками, расположенный ниже.

Чтобы найти каждый n-ый день, можно воспользоваться оператором %, который находит остаток от деления. Если номер текущего дня делится нацело на заданный период, то этот оператор вернёт ноль, иначе он вернёт число больше нуля. Например, если заданный период равен 3, а сейчас пятый день периода, то 5 % 3 === 2, а если шестой день периода, то 6 % 3 === 0.

Для определения дня недели тоже поможет %: номер дня в периоде делим на 7, в остатке получаем номер дня в неделе. Для воскресенья остаток будет равен 0. Например, поделим 15 по счёту день в периоде на 7, в остатке получится 1. Значит это понедельник.

Чтобы позвать Кекса для проверки программы, жмите кнопку Заказчик, принимай программу! в консоли.

Минимальный вид табов
  • index.html
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Задачи продвинутого уровня» тренажёра «Сборник задач по программированию» можно после регистрации и оформления подписки.