Прошу прощения за тупость, никак не могу понять это выражение 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);