Прошу прощения за тупость, никак не могу понять это выражение i % 7 === 6 из :
//Выходные (6 и 7 день недели)
let weekendDays = i % 7 === 6 || i % 7 === 0;
Допустим i = 6 (суббота), тогда 6 % 7 = 0,857… Всю голову сломала, объясните пожалуйста.
Прошу прощения за тупость, никак не могу понять это выражение 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
и все что остается возвращается.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;
}
}
Всем Привет, ребят, я не могу понять где ошибка в моем коде? подскажите пжлста! что я не так тут делаю? По условиям вроде правильно все пишу. 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;
}
}
Я не мог сообразить как сделать проверку для субботы, решил подсмотреть. Я понимаю почему и как это работает. Одно мне не понятно, как можно было додуматься до такого((
Мой код.
Ломал голову, почему часть проверок получается пройти, а другую часть - нет. Оказалось все дело в подсказке.
Изначально я задавал условие if (i%6===0 || i%7===0) , что казалось мне вполне логичным, ведь суббота - 6й день недели, а вс - 7.
Оказалось, что надо первое условие до || поменять так же на 7, испанский стыд, всю голову себе разбил над этим выражением
Честно говоря, до сих пор не до конца понятно, почему вышенаписанное условие не сработало.
Но тем ни менее, прикрепляю код, который сработал.
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
}
}
Очень топорно, зато понятно
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);