[13/20] Третья программа: «Протеиновый коктейль!» [решено]


#1

Для тех кто долго ломает голову над простой задачей(как я)

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

#2

Понятно, что ничего не понятно. Вот не могу въехать и все тут.
вот эту часть еще понимаю - for(var today=period;today<=days;today+=period) все достаточно логично,
а вот дальше
{
total+=workDayAmount;
if(today%7==6||today%7==0)
total-=weekendAmount;
} совсем не понимаю. Можете объясить почему так? Пожалуйста.


#3

for(var today=period;today<=days;today+=period) { // Начинаем считать от 1го попавшего периода прибавляя период с каждым разом, пока период не будет равен количеству дней
total+=workDayAmount; // каждый день кратен периоду плюсуем к общей суме протеина
if(today%7==6||today%7==0) // проверяем все дни которые были в периоде, 1я часть " today%7==6" проверяет не попадает ли это на субботу, 2 я часть не попадает ли на воскресенье
total-=weekendAmount; // при каждом попадании отнимаем лишних 100 протеина в этот день (выходной же)
}
console.log(total);


#5

Если изменить значение var weekendAmount = 100, например на 150, то этот код бедет считать не правильно


#6

Это потому, что в случае выходного нужно вычитать из total не weekendAmount, а разницу между workDayAmount и weekendAmount. И тогда всё будет сходиться:

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


#7

Я честно говоря вообще не понял зачем вычитать? Не проще сделать так?

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

console.log(total);