Путь к молоку

Summary
var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if (time >= 8 && time < 19 && time != 13) {
  goToDairy = true;
} else if (time >=9 && time < 17 && time != 14) {
    goToStore = true;     
  } else if (time >= 7 && time < 20) {
      goToMarket = true;
    }

Как-то так.

я думаю, что правильнее будет указать период с 13 до 14 и с 14 до 15 соответственно.
например:

if ((time >= 8 && time < 13) || (time > 14 && time < 19)) {
goToDairy = true;
}

а вдруг обед или перерыв будет два и более часа?

Добрый день!
Почему-то не все цифры отрабатывают корректно. Можете подсказать?
var time = 7;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if((time => 8 && time < 13) || (time >= 14 && time < 19)) {
goToDairy = true;
}
else
if((time=>9 && time<14) || (time >= 15 && time < 17)) {
goToStore = true;
}
else
if (time=>7 && time<20) {
goToMarket = true;
}

Время записано в часах в переменную time.

Молокозавод находится ближе всех. Он начинает работать в 8, а закрывается в 19. Перерыв на обед с 13 до 14.

Дальше находится магазин. Он работает с 9 до 17. Перерыв на обед с 14 до 15.

Дальше всех находится рынок. Он работает с 7 до 20 без перерывов.

В остальное время все места закрыты и можно никуда не ходить.

Вычисли, куда надо пойти за молоком и запиши значение true в одну из переменных: goToDairy (молокозавод), goToStore (магазин), goToMarket (рынок).

Мой вариант :smirk_cat:

Путь к молоку
console.log('Программа для расчета идеального места для похода за молоком в заданное время');

var time = 15;
var goToDairy = false;
var goToStore = false;
var goToMarket = false;

console.log('Время сейчас : ' + time);

switch (true) {
 case time >=8 && time < 13 || time > 14 && time < 19 : goToDairy = true;
  console.log('Идеально место для похода за молоком - Молокозавод'); break;
 case time >=9 && time < 14 || time > 15 && time < 17 : goToStore = true;
  console.log('Идеально место для похода за молоком - Магазин'); break;
 case time >=7 && time < 20 : goToMarket = true;
  console.log('Идеально место для похода за молоком - Рынок'); break;
 default: console.log('Всё закрыто, сейчас нигде не купить молока :(');
}
3 лайка

Мой вариант. Все просто и работает. Нужно просто учитывать все числа.

var time = 12;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if (time > 8 && time < 13 || time > 14 && time < 19){
goToDairy = true;
}else if (time >= 13 && time < 14){
goToStore = true;
}else if (time >= 7 && time < 8 || time >= 19 && time < 20){
goToMarket = true;
}

Интересно, почему у тебя работает даже без объединение условий с скобки?

Как программа понимает где применять && а где ||.

То есть если бы было вот так ((time > 8 && time < 13 )|| (time > 14 && time < 19))
еще понятно.
Но в твоем случае там же можно интерпретировать по разному, или у программы как и с математическим операциями есть приоритетные. Получается && - приоритетнее чем ИЛИ и выполняется первым, а затем ИЛИ.
Почему тогда авторы замечательного курса про это не говорили?
Да и даже про то что можно условия группировать скобками и тд.

Я делал не зная этих нюансов. Получилось так

if (time >= 8 && time < 13) {

  goToDairy = true;

}
else if (time >= 14 && time < 19) {

goToDairy = true;
}

else if (time >= 13 && time < 14) {

goToStore = true;
}

else if (time >=7 && time < 8) {

goToMarket = true;
}

else if (time >=19 && time < 20) {

goToMarket = true;
}

делал с учетом того, что else if и switch в этой главе мы еще не проходили)

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if ((time >= 7) && (time < 20)) {
  goToMarket = true
}

if ((time >= 9 && time < 14) || (time >= 15 && time < 17)) {
  goToStore = true;
  goToMarket = false;
}

if ((time >= 8 && time < 13) || (time >= 14 && time < 17)) {
  goToDairy = true;
  goToMarket = false;
  goToStore = false;
}

if (time >= 8 && time < 19 ) {
if (time !== 13 && time !== 14) {
goToDairy = true;
console.log(‘dairy’)
}
}

if (time >= 9 && time <= 17 && !goToDairy) {
if (time !== 14 && time !== 15){
goToStore = true;
console.log(‘store’);
}
}

if (time >= 7 && time <= 20) {
if (!goToDairy && !goToStore){
goToMarket = true;
console.log(‘market’)
}
}

Прошу комментария по моему коду.
var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if (time >= 7 && time <= 20) {
if (time >= 8 && time < 13 || time >= 14 && time < 19) {
goToDairy = true
} else if (time >= 13 && time < 14){
goToStore = true
} else {
goToMarket = true;
}

} else {
goToDairy = false;
goToStore = false
goToMarket = false;
}

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

console.log(‘Местное время:’ + time);
if((time >= 8 && time < 13) || (time > 14 && time < 19)) {
goToDairy=true;
console.log(‘Ближайшее место для похода за молоком - Молокозавод’);
} else if((time >= 9 && time < 14) || (time > 15 && time <= 17)) {
goToStore=true;
console.log(‘Ближайшее место для похода за молоком - Магазин’);
} else if (time >= 7 && time <= 20) {
goToMarket=true
console.log(‘Ближайшее место для похода за молоком - Рынок’);
} else {
console.log(‘Все закрыто и можно никуда не ходить’);
}

Помогите разобраться, не могу понять, где допустил ошибку:

if(time >= 8 && time < 19)
{
if(time < 13 || time >= 14)
{
goToDairy = true;
}
}
else if(time >= 9 && time < 17)
{
if(time < 14 || time >= 15)
{
goToStore = true;
}
}
else if(time >= 7 && time < 20)
{
goToMarket = true;
}

у вас первое условие срабатывает, поэтому на третье не выходит с помощью else.
как вариант - объединить логику:
if(time >= 8 && time < 13 || time >= 14 && time < 19) и т.д.

Сводка

if (time >= 8 && time < 13 || time >= 14 && time < 19) { goToDairy = true; } else if (time >= 9 && time < 14 || time >= 15 && time < 17) { goToStore = true; } else if (time >= 7 && time < 20) { goToMarket = true; }

учитывая, что else еще не был пройден, получилось слишком длинно. как можно упростить?

var time = 14;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if (time >= 8 && time < 19) {
  goToDairy = true;
    if (time >= 13 && time < 14) {
     goToDairy = false;
     }
  }
if (time >= 9 && time < 17) {
  goToStore = true;
   if (time >= 14 && time < 15) {
     goToStore = false;
     }
  }
if (time >= 7 && time < 20) {
  goToMarket = true;
  }
  
if (goToDairy == true) {
  goToStore = false;
  goToMarket = false;
  }
if (goToDairy == false && goToStore == true) {
  goToMarket = false;
  }


console.log(goToDairy, goToStore, goToMarket)

Этот код подойдет

if ( time >= 8 && time < 19 && time != 13 && time != 14) {
goToDairy = true;
}

if ( !goToDairy && time >= 9 && time <= 17 && time != 15) {
goToStore = true;
}

if ( !goToDairy && !goToStore && time >= 7 && time <= 20 ) {
goToMarket = true;
}

Решил задачу таким способом.
Способ исключительно из этого курса. Других пока не знаю.

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;
if ((time >=8 && time<13) || (time>=14 && time<19)){goToDairy = true}
else if (time >=13 && time <14){goToStore = true }
else if ((time >=7 && time <8) ||( time >=19 && time < 20)) {goToMarket=true}
else if (time <8 && time>= 19) {
goToDairy = false; goToStore = false; goToMarket = false;
}

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if ((time>=8 && time<13)||(time>=14 && time<19)) {goToDairy=true;
console.log (‘Идём за молоком в молокозавод’);
}if (time>=13 && time<15) {goToStore=true;
console.log (‘Идём за молоком в магазин’);
}if ((time>=7 && time<8)||(time>=19 && time<20)){goToMarket=true;
console.log (‘Идем за молоком на рынок’);
}

По решению задания вопросов не возникло. Однако для реалистичности условия можно было прописать время перехода до магазина рынка и мол.завода. На сегодня в 20.00 можно отправить Кекса на рынок и он явно будет разочарован.

Кекс со времен Шредингера находится в состоянии квантовой суперпозиции, что говорит о том, что он может перемещаться на субсветовых скоростях. а поскольку погрешности в таком случае ниже математического предела вычислений жабаскрипта, поэтому пренебрегаем

:smile:

var time = 15;

var goToDairy = false;
var goToStore = false;
var goToMarket = false;

if ((8 <= time && time < 13) || (14 < time && time < 19)) {
goToDairy = true;
}
else if ((9 <= time && time < 14) || (15 < time && time < 17)) {
goToStore = true;
}
else if (7 <= time && time < 20) {
goToMarket = true;
}

if (20 < time && time < 7) {
goToDairy = false;
goToStore = false;
goToMarket = false;
}