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


#1

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) {
total += workDayAmount;
if (i % 7 === 6 || i % 7 === 0) {
total -= workDayAmount;
total += weekendAmount;
}
}
}

Прошу критики


#2
Summary
  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) {
    total += workDayAmount;
    if(i % 7 == 6 || i % 7 == 0) {
      total -= weekendAmount;
      }
  }
}

#3

Зачем нужна эта проверка?:

if(i % period === 0) {...}

Если цикл можно написать так:

for (var i = period; i <= days; i +=period) {...}

#4

А можете, пожалуйста, полностью написать ваш код? Просто я заменила у себя проверку

if(i % period === 0) {...}

на ваш цикл и у меня не работает, может что-то еще нужно дописать


#5

Да, вот:

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

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

#6

В своем решении я указывал в for, что i = 3. На мой взгляд, так решение не изменится, если в условии period больше не будет равен 3. Но для решения этой задачи… Впрочем, жто мой вариант:

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

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


#7

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

Господи, какой же ужас я написал…но он работает!)))