Путь к молоку


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

Как-то так.


#2

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

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

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


#3

Добрый день!
Почему-то не все цифры отрабатывают корректно. Можете подсказать?
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 (рынок).


#4

Мой вариант :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('Всё закрыто, сейчас нигде не купить молока :(');
}

#5

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

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


#6

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

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

То есть если бы было вот так ((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;
}


#7

делал с учетом того, что 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;
}

#8

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’)
}
}


#9

Прошу комментария по моему коду.
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;
}