Длительность прогулки

Ок, напишите в чем ошибка? Я сам не вижу ошибки, и код у меня работает. Проверку задания прошел полностью. По поводу isRaining общей для всех температур я понял по примеру кода выше от пользователя Go StaR.

http://codeguide.academy/

3 лайка

ну первое, данный топик по этой практической задаче:
https://htmlacademy.ru/courses/209/challenge/6
вы же написали свой код к задаче из теории:
https://htmlacademy.ru/courses/209/run/17
потому собственно и не работает. дальнейшие объяснения наверное попадут уже под оффтоп.
ваш топик здеся
засрали уже просто форум топиками. одних только “Сколько гулять?” уже наплодили 19 тем. Но вы все равно попали именно сюда.

а вам не кажется. что требовать от человека, который только-только проходит курсы, знания того, что дают на интенсивах, немного… странно?

я ничего не требую, пусть пишет как хочет. это уже работодатель будет придирчив, я лишь намекаю, что неплохо бы ознакомиться. потому и предложил переписать позже, когда курсы закончит. и вообще IT это постоянное самостоятельное обучение, рынок не ждет, когда на курсах все разжуют и в рот положат.
я конечно понимаю, что любой плагин навроде beatify исправит это, но не знать что он делает, это моветон =)

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

человек только начинает и искать ему работодателя не разумно будет)
да и не знает он еще что такое плагин или пакет)

Ваш следующий код можно еще упростить:
var minWalk = Math.abs(temperature-20);

if (itsRaining || temperature<0 || temperature>35){minutes=0}
else if (temperature==20){minutes=20}
else {minutes=20-minWalk};

Таким образом:

if (itsRaining || temperature < 0 || temperature >= 35) {minutes = 0}
else {minutes = 20 - Math.abs(temperature - 20)};

var temperature = 20;
var itsRaining = false;
var idealTemperature = 20;
var minutes = idealTemperature;
if (itsRaining || temperature < 0 || temperature > 35) {
minutes = 0;
} else if (temperature > idealTemperature) {
minutes -= temperature - idealTemperature;
} else if (temperature < idealTemperature) {
minutes -= idealTemperature - temperature;
}

Попрошу критики и советов потому, что тяжело мне, как новичку, даются эти задачки…

idealTemperature не нужна. по ТЗ это константа, а не переменная, потому можно отнести к магическим числам, также как вы приводите 0 и 35.

присказка про лишние переменные

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

"Плохой программист Джон сделал ошибку в коде, из-за которой каждый пользователь программы был вынужден потратить в среднем 15 минут времени на поиск обхода возникшей проблемы. Пользователей было 10 миллионов. Всего впустую потрачено 150 миллионов минут = 2.5 миллиона часов. Если человек спит 8 часов в сутки, то на сознательную деятельность у него остается 16 часов. То есть Джон уничтожил 156250 человеко-дней ≈ 427.8 человеко-лет. Средний мужчина живет 64 года, значит Джон убил примерно 6 целых 68 сотых человека.

Как тебе спится, Джон — серийный программист?"

Также и с лишними переменными, микрофризы на каждой операции, превращают код из сотен функций в зависания-ожидания в несколько секунд.

также, алгоритм, который вы избрали не оптимален. проще же вычитать модуль разности чисел, не так ли?
а исходное условие поместить в ограничитель, а не установить правила невыполнения. Т.е. minutes изначально будет 0, а не нулем оно будет вот в таких случаях:

(!itsRaining && temperature >= 0 && temperature <= 35)

Хотели критики - получайте :sweat_smile:
Конечно ща набегут “защитнички”, которые скажут - работает же код, чо ты… ну тогда про серийного программиста Джона прочитайте еще раз.

Попробую тоже подтвердить, что “краткость - сестра таланта”. Решение в 2 условия и без возврата абсолютного значения числа. Как для новичка, более чем удобочитаемо и логично.

var temperature = 20;
var itsRaining = false;
var minutes = 20;
if (!itsRaining && temperature >= 0 && temperature <= 20) {
  minutes = temperature;
} else
if (!itsRaining && temperature > 20 && temperature <= 35) {
  minutes = minutes - (temperature - 20);
} else {
  minutes = 0;
}
console.log(minutes);

p.s У меня работает. Опытные товарищи, если что, черканите замечание.

через модуль числа еще проще.

var temperature = 20;
var itsRaining = false;
var minutes = 0; 
if (!itsRaining && temperature >= 0 && temperature <= 35) {
  minutes = 20 - Math.abs(temperature - 20); 
}
1 лайк

Да, конечно проще, согласен. Но если учитывать то, что не в одном из 16 заданий курса “Условий”, данный метод не используется и его применение на практике не раскрывается - мы “типо” его не знаем - решение без его использование, как то логичнее и правильнее для юных падаванов.

1 лайк

ну скажем так методы математического объекта это не те знания, которые представляют сложность факультативного изучения =) тут и синус не проходят, но саму функцию то вы знаете

спасибо за совет, я понимаю что чем короче код, тем менее времени нужно чтобы его выполнить, поэтому и просил поправить меня, чтобы изначально стараться учить и писать правильно.:wink:

var temperature = 24;

var itsRaining = false;

var minutes;

minutes = temperature

if(itsRaining || temperature < 0 || temperature > 35) {console.log(minutes = 0);

}

else if( temperature < 20) {

console.log(minutes = temperature);

} else if( temperature > 20 ) {

console.log(‘можно гулять ’ + (minutes = 20 - (temperature - 20)) + ’ минут’);

}
подскажите всё ли правильно я написал, проверку прошёл.

Подскажите, что не так у меня (это моя 3я программа на javascript)

var temperature = 20;
var isRaining = true;
var minutes = 0;

if (!isRaining && temperature >= 10 && temperature <= 14) {
minutes = 30;
}
if (!isRaining && temperature >= 15 && temperature <= 24) {
minutes = 40;
}
if (!isRaining && temperature >= 25 && temperature <= 35) {
minutes = 20;
}
else {
minutes = 0;
}

console.log(minutes);

ну этот тред для практики, а вы приводите код из теории. там разные условия задачи.

в вашем коде почему то отсутствуют обычные операторы сравнения и очень много повторяющегося кода. ветка else не нужна, потому что вы и так устанавливаете дефолтное значение var minutes = 0;

должно быть так
var temperature = 20;
var isRaining = true;
var minutes = 0;

if (!isRaining) {
  if (temperature >= 10 && temperature < 15) {
    minutes = 30;
  } else if (temperature >= 15 && temperature < 25) {
    minutes = 40;
  } else if (temperature >= 25 && temperature <= 35) {
    minutes = 20;
  }
}

console.log(minutes);

мой вариант… Годится?

if (itsRaining){minutes = 0}
else
{
if (temperature < 0 || temperature > 35){minutes = 0}
if (temperature > 0 && temperature <= 20){minutes = 20-(20-temperature)}
if (temperature >= 20 && temperature < 35){minutes = 20+(20-temperature)}
}

1 лайк

var temperature = 28;
var itsRaining = false;
var minutes;

if (itsRaining==true || 0>temperature || temperature>35) {minutes=0;}
else if (temperature==20) {minutes=20;}
else if (temperature<20) {minutes=temperature;}
else {minutes=20+(20-temperature);}

Добрый вечер! Покритикуйте код пожалуйста:

var temperature = 20;
var ideal = 20;

var itsRaining = false;
var minutes;

if(temperature > ideal){
minutes = ideal - (temperature - ideal);
}

if(temperature < ideal){
minutes = temperature;
}

if(!itsRaining == false || temperature < 0 || temperature > 35){
minutes = 0;
}