Да, спасибо и сам уже понял.
Почему нужно использовать именно так (i % 7 === 6), а не так (i % 6 === 0)??
остаток от деления на 6 и на 7 это разные вещи
Добрый вечер всем!)
Вот мое решение.
вроде как очень похоже на решения остальных, но все-равно не так.
Все работает)
var total = 0;
for (var i = 1; i<= days; i++) {
if (i % period === 0) {
if ((i % 7) === 6 || i % 7 === 0) {
total += weekendAmount;
} else {
total += workDayAmount;
}
}
}
console.log(total);
Так если субботу, это 6 день недели и при делении будет 0. Мы же выделяем выходные, а это 6 и 7 день недели
ключевое слово “недели”. сами подумайте, если в неделе было бы 10 дней (а не 7), у вас бы тот же результат получился?
Вроде бы, всё работает.
var days = 9; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total = 0; //Общее количество протеина за период
for(var i = period; i <= days; i++){
if(i%7 == 6 || i%7 == 0){
if(i%period == 0){
total += weekendAmount;
}
}
else{
if(i%period == 0){
total += workDayAmount;
}
}
console.log(total);
}
Всем привет.
Я реально методично иду по курсу и получилось с первого раза, без подсказок и подглядываний:
Это решение не будет отрабатывать в случае если изменить значение потребляемого в выходные или в будние протеина.
зачем писал,если сам понимаешь, что ужас? и зачем там брейк?
Долго не мог понять, почему не работает условие
if (i % 6 == 0 || i % 7 == 0)
Оказалось, что суббота 2-й недели - не 12-й день
В итоге подправил и заработало:
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 грамм. Обработайте отдельно случай с воскресеньями и тест будет пройден
Спасибо, исправил!
Странно что это нигде не написано, я всё делил 6/7 и получал 0.8 и не мог понять как
6 % 7 === 6. Так что спасибо за разъеснение.
Не проходит проверку на 15 и 25 днях подскажите, пожалуйста, что не так?
var days = 15; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total = 0;
for( var i = 1; i <= days; i++){
if( i % 7 == 6 || i % 7 == 0 && i % 3 == 0 ){
total+=weekendAmount;
}; if ( i % 7 != 6 && i % 7 != 0 && i % 3 == 0){
total+=workDayAmount;
}
}
console.log(total)
Добрый день!
В первом If не хватает скобок. Условие не всегда корректно срабатывает.
( (i % 7 == 6 || i % 7 == 0) && i % 3 == 0 )
Долго мучилась с тем как определить субботу (не заглядывала в подсказки) .
В итоге придумалось )
for (var i = 0; i <= days; i += 3) {
if (i > 0) {
if ((i + 1) % 7 == 0 || i % 7 == 0) {
total += weekendAmount;
} else {
total += workDayAmount;
}
console.log(total);
}
}