Ок, напишите в чем ошибка? Я сам не вижу ошибки, и код у меня работает. Проверку задания прошел полностью. По поводу isRaining общей для всех температур я понял по примеру кода выше от пользователя Go StaR.
ну первое, данный топик по этой практической задаче:
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)
Хотели критики - получайте
Конечно ща набегут “защитнички”, которые скажут - работает же код, чо ты… ну тогда про серийного программиста Джона прочитайте еще раз.
Попробую тоже подтвердить, что “краткость - сестра таланта”. Решение в 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);
}
Да, конечно проще, согласен. Но если учитывать то, что не в одном из 16 заданий курса “Условий”, данный метод не используется и его применение на практике не раскрывается - мы “типо” его не знаем - решение без его использование, как то логичнее и правильнее для юных падаванов.
ну скажем так методы математического объекта это не те знания, которые представляют сложность факультативного изучения =) тут и синус не проходят, но саму функцию то вы знаете
спасибо за совет, я понимаю что чем короче код, тем менее времени нужно чтобы его выполнить, поэтому и просил поправить меня, чтобы изначально стараться учить и писать правильно.
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)}
}
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;
}