Третья программа "Протеиновый коктейль"

var days = 9; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total=0
for (var day=1; day<=days; day++) {
if (day%period==0) {
if ((day + 1) % 7 === 0 ) {
total+=weekendAmount;}
else {total+=workDayAmount;}
}
}

не проходит проверку на 25 дне. Что не так?

эм, а зачем вообще делать шаг 1 день, если прием каждые 3 дня? шаг цикла должен быть period.
также у вас отсутствует проверка на воскресенье.

var days = 9; // Дней в периоде
var evenDayAmount = 200; // Количество протеина в чётные дни
var oddDayAmount = 100; // Количество протеина в нечётные дни
var total = 0; // Общее количество протеина

for (var i = 1; i <= days; i++) {
  if (i % 2 == 0) {
    total += evenDayAmount;
  } else {
    total += oddDayAmount;
  }
}
var days = 9; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total = 0;

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

Сначала не мог решить нормально, нашел лазейку,но через костыли.
Потом решил посмотреть подсказку. Не понял зачем перебирать каждый день, а не использовать период. Решил все таки делать через период. А вот подсказка по определению дня с помощью остатка по делению была реально дельная, сам не допер.
Это самое адекватное решение которое у меня вышло. На мой взгляд сносно.

первые два ветвления объедините в одно, у вас один и тот же вывод из них
старт цикла должен быть не в 3, а в period

var days = 9; // Дней в периоде
var evenDayAmount = 200; // Количество протеина в чётные дни
var oddDayAmount = 100; // Количество протеина в нечётные дни
var total = 0; // Общее количество протеина

for (var i = 1; i <= days; i++ ) {
if (i % 2 ===0) {
total += evenDayAmount;
console.log(‘Чётный день’);
} else {
if (i % 2 !==0) {
total += oddDayAmount;
console.log(‘Нечётный день’);
}
}
}

1 лайк

еще так можно
var days = 9; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total=Math.floor(days/period)*200;
for(var i=1;i<=days;i+=2){
if (i%6==0 || i%7==0){
total-=100;}
}

как-то так, работает с любыл кол-вом дней…

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

for(let i=1; i<=days; i++){
  if(i%period === 0){
    if(i%7 === 0 || i%7 === 6){
      total += weekendAmount
    } else {
      total += workDayAmount
    }
  }
}
let days = 9; // Дней в периоде
let evenDayAmount = 200; // Количество протеина в чётные дни
let oddDayAmount = 100; // Количество протеина в нечётные дни
let total = 0; // Общее количество протеина

for (days; days>0; days--)
if (days%2==0) {
  total += evenDayAmount;
  }
else {
  total += oddDayAmount;}
  
  console.log (total)
let days = 9; // Дней в периоде
let evenDayAmount = 200; // Количество протеина в чётные дни
let oddDayAmount = 100; // Количество протеина в нечётные дни
let total = 0; // Общее количество протеина

for (let i = 1; i <= days; i++) {
  if (i % 2 === 0) {
    total += evenDayAmount;} else {total += oddDayAmount;}
}

let days = 9; // Дней в периоде
let evenDayAmount = 200; // Количество протеина в чётные дни
let oddDayAmount = 100; // Количество протеина в нечётные дни
let total = 0; // Общее количество протеина

for (var day = 1; day <= days; day++) {
if (day % 2 === 0) {
total += evenDayAmount;
} else {
total += oddDayAmount;
};
};

Вот так сработало.

Ребят, поясните для чего объявлять period, если по текущему заданию создается впечатление что протеин употребляется каждый день. Откуда убеждение что раз в три дня? Это условие было до обновления тренажера мб?

В итоге остановился на таком решении. Что я упустил, все ли правильно?
Какие-то доп. проверки еще должны быть?

let days = 9; // Дней в периоде
let evenDayAmount = 200; // Количество протеина в чётные дни
let oddDayAmount = 100; // Количество протеина в нечётные дни
let total = 0; // Общее количество протеина


for (let day = 1; day <= days; day++) {
    if(day % 2 === 0) {
      total += evenDayAmount; 
    } else {
      total += oddDayAmount;
      }
      console.log('В ' + day + ' день, должен выпить ' + total + ' мл. протеина')
}

Получилось выполнить код таким образом :

let days = 9; // Дней в периоде
let evenDayAmount = 200; // Количество протеина в чётные дни
let oddDayAmount = 100; // Количество протеина в нечётные дни
let total = 0; // Общее количество протеина

for (let i = 1; i <= days; i++) {
if ( i % 2 === 1) {
total += oddDayAmount;
} else {
total += evenDayAmount;
}
}

let days = 9; // Дней в периоде
let evenDayAmount = 200; // Количество протеина в чётные дни
let oddDayAmount = 100; // Количество протеина в нечётные дни
let total = 0; // Общее количество протеина
let temp=0;

for (let i = 1; i<=days;i+=2){
temp+=oddDayAmount;
}

oddDayAmount=temp;
temp=0;

for (let i = 2; i<=days;i+=2){
temp+=evenDayAmount;
}
evenDayAmount=temp;

total = oddDayAmount + evenDayAmount;

у меня такое решение получилось
for (let day = 1; day <= days; day+=2){
console.log(day)
total += oddDayAmount
console.log(total);
if(days > day){
total += evenDayAmount
}
}

1 лайк

Привет. Подскажите, пожалуйста, почему происходит так, как происходит.

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

for (let counter = 1; counter <= days; counter++) {
counterWeekDays++;
counterDays++;

if (counterWeekDays > 7) {
counterWeekDays = 1;

} else if (counterDays > 3) {
counterDays = 1;

} else if (counterWeekDays < 6 && counterDays === 3) {
total = total + workDayAmount;
} else if (counterWeekDays >= 6 && counterDays === 3) {
total = total + weekendAmount;
}
}

Проблема заключается в том, что когда счетчик дней недели сбрасывается, и в эту же итерацию выпадает день приема, то значение total не увеличивается. То есть, на каждой итерации, в которой происходит увеличение счетчика counterWeekDays программа увеличивает значение total, при условие, что значение counterDays === 3, но, если значение counterDays === 3 и в этой же итерации счетчик был сброшен, а именно стал 1, то total не увеличивается.

let days = 9; // Дней в периоде
let evenDayAmount = 200; // Количество протеина в чётные дни
let oddDayAmount = 100; // Количество протеина в нечётные дни
let total = 0; // Общее количество протеина

for(let i = 1; i <= days; i++){
if(i % 2 == 0){
total += evenDayAmount
}
else{
total += oddDayAmount
}
}