Третья программа "Протеиновый коктейль"


#42

Программирование стоит на операторах. % - один из них. То, что остальные заглянули чуть дальше, не делает их снобами. Решайте, как у вас получается. Здесь же не банковским счетом меряются


#43

Очень хотелось бы в курсе больше объяснять логику применения разных операторов и переменных. Например ‘i’ в for - что это? Это не переменная - она нигде не объявляется, но мы ее применяем. Почему и что это такое не ясно из теории курса. (Просто тупое повторение задания не дает объяснений что к чему) Или почему в заданиях “Драйвер печати: режим копий” ставим “===” при выполнении задания “После объявления переменных добавьте условие, проверяющее, что mode имеет значение ‘pageCopy’.” Почему не просто = или ==… Таких нюансов много вылазит при выполнении основного задания самостоятельно. возникает много вопросов.


#44

Как же не объявляется? Вот, в теории описываются все части цикла, в том числе первая часть с объявление переменной-счетчика.
По поводу знака равенства, один знак равенства = используется для присвоения, поэтому для сравнения значений использоваться не может. А чем отличается == от === в теории написано, правда в предыдущем курсе программы.
Также хотелось бы обратить ваше внимание на то, что теория в курсах - это минимум информации, а максимум - в книгах и справочниках, например https://learn.javascript.ru/


#45

Спасибо большое за объяснение (так как не учла, что внутри for и есть var, который объявляет переменную i) и за хороший ресурс с расширенной теорией. Буду углубляться. так как действительно минимума не хватает для понимания применений разных операторов в определенных случаях. Надо шире и больше) Спасибо еще раз)


#46

= - это оператор присвоения.
a = 10 - это значит вы переменной а присвоили значение 10
== и === - это операторы сравнения, которые дают значения false или true в зависимости от результата сравнения
== - нестрогое сравнение, допускается приведение значений переменных к одному типу "10": string == 10: number // true
=== - строгое сравнение, учитывается тип данных "10": string === 10: number // false


#48
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)//находим количество протеина в будни и выходные.

#49

200 и 100 - это значения переменных. Пользуйтесь ими, тогда код будет универсальным.


#50

Верно, упустил, спасибо.


#51

Где объясняется про эту часть кода:
“regDay++; //Ищем протеиновые дни в промежутке времени”?
Почему прибавляет именно period?


#52

А вы что хотите прибавить?


#53

Потому что в цикле объявлена переменная var i = period? Почему тогда пишете i+=period, а не i++?


#54

Хорошо мы общаемся вопросами на вопрос!


#55

Прибавляется period, потому что в расчетах нас не интересует каждый следующий день, а только каждый третий.


#56

Смысл мне понятен. Мне не понятно как это работает. Почему ‘regDay++’ === ‘regDay+=period’?


#57

Не может быть знака равенства между этими величинами. Я не знаю, откуда вы это взяли.
Оператор ++ увеличивает на единицу, а += period в данном случае увеличивает на 3. Какое может быть равенство?


#58

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 + ’ гр. протеина’);


#59

Согласен, код читается просто и без всяких %. Но не совсем понял откуда цифры взял.
По возможности хотелось бы подробнее разобрать твой код, если не сложно.
Спасибо!


#60

Добрый день!
Подскажите, пожалуйста, в чем ошибка моего кода:
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 проверок, и, насколько я понимаю, что-то не так с воскресеньем. Буду очень признателен!


#61

Добрый день!
Попробуйте так:
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.


#62

Мое лаконичное решение:

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;
}