Программирование стоит на операторах. % - один из них. То, что остальные заглянули чуть дальше, не делает их снобами. Решайте, как у вас получается. Здесь же не банковским счетом меряются
Очень хотелось бы в курсе больше объяснять логику применения разных операторов и переменных. Например ‘i’ в for - что это? Это не переменная - она нигде не объявляется, но мы ее применяем. Почему и что это такое не ясно из теории курса. (Просто тупое повторение задания не дает объяснений что к чему) Или почему в заданиях “Драйвер печати: режим копий” ставим “===” при выполнении задания “После объявления переменных добавьте условие, проверяющее, что mode имеет значение ‘pageCopy’.” Почему не просто = или ==… Таких нюансов много вылазит при выполнении основного задания самостоятельно. возникает много вопросов.
Как же не объявляется? Вот, в теории описываются все части цикла, в том числе первая часть с объявление переменной-счетчика.
По поводу знака равенства, один знак равенства =
используется для присвоения, поэтому для сравнения значений использоваться не может. А чем отличается == от === в теории написано, правда в предыдущем курсе программы.
Также хотелось бы обратить ваше внимание на то, что теория в курсах - это минимум информации, а максимум - в книгах и справочниках, например https://learn.javascript.ru/
Спасибо большое за объяснение (так как не учла, что внутри for и есть var, который объявляет переменную i) и за хороший ресурс с расширенной теорией. Буду углубляться. так как действительно минимума не хватает для понимания применений разных операторов в определенных случаях. Надо шире и больше) Спасибо еще раз)
= - это оператор присвоения.
a = 10
- это значит вы переменной а
присвоили значение 10
==
и ===
- это операторы сравнения, которые дают значения false
или true
в зависимости от результата сравнения
==
- нестрогое сравнение, допускается приведение значений переменных к одному типу "10": string == 10: number // true
===
- строгое сравнение, учитывается тип данных "10": string === 10: number // false
var days = 9; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var weekEnd = 0; //Количество выходных в промежутке
var total = 0; //Общее количество протеина
var regDay = 0; //Количетсво протеиновых дней
for (i=period; i <= days; i+= period){
regDay++; //Ищем протеиновые дни в промежутке времени
if (i%7===0 || i%7===6){
weekEnd++;//считаем количетсво выходных
}
}
total = ((regDay-weekEnd)*200)+(weekEnd*100)//находим количество протеина в будни и выходные.
200 и 100 - это значения переменных. Пользуйтесь ими, тогда код будет универсальным.
Верно, упустил, спасибо.
Где объясняется про эту часть кода:
“regDay++; //Ищем протеиновые дни в промежутке времени”?
Почему прибавляет именно period?
А вы что хотите прибавить?
Потому что в цикле объявлена переменная var i = period? Почему тогда пишете i+=period, а не i++?
Хорошо мы общаемся вопросами на вопрос!
Прибавляется period, потому что в расчетах нас не интересует каждый следующий день, а только каждый третий.
Смысл мне понятен. Мне не понятно как это работает. Почему ‘regDay++’ === ‘regDay+=period’?
Не может быть знака равенства между этими величинами. Я не знаю, откуда вы это взяли.
Оператор ++ увеличивает на единицу, а += period в данном случае увеличивает на 3. Какое может быть равенство?
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===0 || i%7===6){
total += weekendAmount;
}
else {
total += workDayAmount;
}
}
console.log(‘Нужно сьесть ’ + total + ’ гр. протеина’);
Согласен, код читается просто и без всяких %. Но не совсем понял откуда цифры взял.
По возможности хотелось бы подробнее разобрать твой код, если не сложно.
Спасибо!
Добрый день!
Подскажите, пожалуйста, в чем ошибка моего кода:
var days; // Дней в периоде
var period = 3; // Как часто я ем протеин (раз в три дня)
var workDayAmount = 200; // Количество протеина в будние
var weekendAmount = 100; // Количество протеина в выходные
var total = 0;
for(var i = 1; i <= days; i++){
if(i % 3 == 0){
if(i % 6 == 0 || i % 6 == 1){
total+=weekendAmount}else{
total += workDayAmount}
}
}
Программа выдает 3/5 проверок, и, насколько я понимаю, что-то не так с воскресеньем. Буду очень признателен!
Добрый день!
Попробуйте так:
for(var i = 1; i <= days; i++) {
if(i % 3 === 0) {
if(i % 7 === 0 || i % 7 === 6) {
total+=weekendAmount} else {
total += workDayAmount}
}
}
Остаток от деления номера любого субботнего дня на 7 будет равен 6.
Мое лаконичное решение:
var days = 15; // Дней в периоде
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;
}