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

Прошу прощения за тупость, никак не могу понять это выражение i % 7 === 6 из :

//Выходные (6 и 7 день недели)
let weekendDays = i % 7 === 6 || i % 7 === 0;

Допустим i = 6 (суббота), тогда 6 % 7 = 0,857… Всю голову сломала, объясните пожалуйста.

% это остаток от деления, а не деление) Поэтому 6 % 7 возвращает 6, а 7 % 7 вернет 0. Тоже самое с 14 % 7 === 0 и т.д.

Некорректно задала вопрос)

Я понимаю как работает допустим 8 % 3, вернёт 2 (если разложить 8 на части, получится что 6 делится на 3 и остаётся ненужный хвост 2, который и является остатком.)

Непонятно было как работает если нужно найти остаток от меньшего числа, например то же 6 % 7, вот никак не доходило до меня почему возвращает 6.

Нашла развёрнутый ответ, может кому пригодится:
1 % 7 = 1;
2 % 7 = 2 ;
3 % 7 = 3; и тд

  • “Оператор % работает как нормальный оператор возвращающий остаток от деления. При a % b a делится нацело на b и все что остается возвращается.
    **Числа 1, 2, и 3 меньше 7, поэтому нацело они на 7 не делятся (результат их деления на 7 нацело равен нулю) и в остатке остаются сами числа.”
1 лайк

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

while(i<=days){
if(i%period===0){
if((i%7)>=1&&(i%7)<=5){
total+=workDayAmount;
}
else {
if((i%7)===6||(i%7===0)){
total+=weekendAmount;
}
}
}
i++;
}

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

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

    for (let i =1; i <= days; i++) {
    if (i % period === 0 && (i % 6 ===0 || i % 7 ===0)){
    total+=weekendAmount;
    } else {
    if (i % period === 0 && ( i % 6 != 0 || i % 7 != 0)) {
    total+=workDayAmount;
        }
      }
    }
let days = 9;
let period = 3;
let workDayAmount = 200;
let weekendAmount = 100;
let total = 0;

while (days > 0) {
  if (days % period === 0) {
    if (days % 7 === 6 || days % 7 === 0) {
        total += weekendAmount} else {
        total += workDayAmount}
  }
  days–
}

Можно так, если уж всё подробно расписывать

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

for (let day = 1; day <= days; day++) {

if (day % period == 0 && !(day % 7 == 6 || day % 7 == 0)) {
total += workDayAmount;
} else if (day % period == 0 && (day % 7 == 6 || day % 7 == 0)) {
total += weekendAmount;
}

console.log(day + ': ’ + total);

}
console.log('Количество протеина необходимое на период в ’ + days + ’ дней: ’ + total + ‘г.’);

Подскажите, пожалуйста, почему не работают варианты?

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

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

Или этот
for (i = 1; i <= days; i++) {
if (days % period === 0) {
if (days % 7 === 6 && days % 7 === 0) {
total = total + weekendAmount;
} else {
total = total + workDayAmount;
}
}
else {
total = total + 0;
}
}

Всем Привет, ребят, я не могу понять где ошибка в моем коде? подскажите пжлста!:slight_smile: что я не так тут делаю? По условиям вроде правильно все пишу. 3 проверки проходит, а 2 нет.

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

 } else {
   console.log ('сегодня пить не нужно');
   }

}

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

Я не мог сообразить как сделать проверку для субботы, решил подсмотреть. Я понимаю почему и как это работает. Одно мне не понятно, как можно было додуматься до такого((

2 лайка

Мой код.
Ломал голову, почему часть проверок получается пройти, а другую часть - нет. Оказалось все дело в подсказке.
Изначально я задавал условие if (i%6===0 || i%7===0) , что казалось мне вполне логичным, ведь суббота - 6й день недели, а вс - 7.
Оказалось, что надо первое условие до || поменять так же на 7, испанский стыд, всю голову себе разбил над этим выражением :scream_cat:
Честно говоря, до сих пор не до конца понятно, почему вышенаписанное условие не сработало.
Но тем ни менее, прикрепляю код, который сработал.

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

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

for (i = period; i <= days; i += period) {
  if (i % 7 === 0 || i % 7 === 6) {
      total += weekendAmount
  } else { 
      total += workDayAmount
  }
}
1 лайк

Очень топорно, зато понятно

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

for (let i = 1; i <= days; i++) {

  if (i % 2 === 0) {
    sum += 2;
    even += 1; 
  } else {
    sum += 1;
    odd += 1;
  }
}

total = even*evenDayAmount + odd*oddDayAmount

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