Испытание "Запасы протеина"

Долго не мог понять, почему не работает условие

if (i % 6 == 0 || i % 7 == 0) 

Оказалось, что суббота 2-й недели - не 12-й день :slight_smile:

В итоге подправил и заработало:

for (var i = 3; i <= days; i += period) {
if (i % 7 == 0 || i % 7 == 6) {total += weekendAmount;}
else {total += workDayAmount;}
}

Эта запись означает:

if( i % 7 === 6 ) - при делении на 7 (дней в неделе) мы в остатке получаем 6-й день, значит субботу, воскресенье.
if(i % 7 === 0) - при делении переменной i на 7 (дней в неделе) мы в остатке получаем 0, значит седьмой день в неделе, т.е. воскресенье, выходной.

|| - логический оператор “или”.

У меня возник вопрос.Почему во втором условии мы отнимаем
weekendAmount = 100.

Не могу понять, почему проходит 4 из 5 проверок. На значении 25 выдаёт ошибку !

var days = 9; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total = 0;

for (var i=1; i<=days; i++) {
if (i % period ===0) {
if (i % 7 < 6 ) {
total += workDayAmount;
} else {
total +=weekendAmount;
}
}
}
console.log(total);

Ваш код не проходит проверку со значением 25 из-за того, что один из дней приёма выпадает на воскресенье. 21 день. остаток от деления равен 0. Он меньше, чем 6, поэтому помечается рабочим днём и прибавляется 200 грамм. Обработайте отдельно случай с воскресеньями и тест будет пройден

Спасибо, исправил!

1 Симпатия

Странно что это нигде не написано, я всё делил 6/7 и получал 0.8 и не мог понять как
6 % 7 === 6. Так что спасибо за разъеснение.