Ineska
13.Октябрь.2017 19:37:57
1
У меня таким образом получилось. Но не совсем по правилам. У кого еще какие варианты?
Код
var temperature = 22;
var itsRaining = false;
var err = 20 - temperature;
var minutes;
if (itsRaining || !itsRaining && temperature > 35 || temperature <= 0) {
minutes = 0;
} else if (temperature == 20 ) {
minutes = 20;
}
else {
minutes = 20 - Math.abs(err);
}
console.log('Сегодня можно гулять ' + minutes + ' минут');
Ineska
14.Октябрь.2017 06:03:18
3
Мне очень нравится, только один случай не учли, когда температура равна 20.
Alivan
14.Октябрь.2017 12:02:17
4
У меня решение вышло таким:
Код
var temperature = 10;
var itsRaining = false;
var minutes;
if (temperature > 0 && temperature < 35 && !itsRaining) {
minutes = 20 - Math.abs(temperature - 20);
console.log('Время прогулки: ' + minutes + ' минут.');
} else {
minutes = 0;
console.log('Прогулка не состоится.');
}
Но!
Операция Math.abs() в течении курса нигде не упоминается.
Возможно она упоминалась где-то в других курсах, но в “Знакомство с JavaScript” и “Условия” я её не видела.
Конечно, можно обойтись и без нее, но количество кода вырастет:
Код
var temperature = 20;
var itsRaining = false;
var minutes;
if (temperature > 0 && temperature < 35 && !itsRaining) {
if (temperature <=20) {
minutes = temperature;
} else {
minutes = 20 - (temperature - 20);
}
console.log('Время прогулки: ' + minutes + ' минут.');
} else {
minutes = 0;
console.log('Прогулка не состоится.');
}
3 лайка
Ineska
14.Октябрь.2017 13:09:32
5
Я знаю, что операция определения модуля числа не была разобрана в курсах. Поэтому и указала, что код не совсем соответствует правилам.
Без abs но с тернарным оператором условия.
Код
if (itsRaining || temperature < 0 || temperature > 35) {
minutes = 0;
} else {
var diff = 20 - temperature;
minutes = 20 - (diff >= 0 ? diff : -diff);
}
4 лайка
Ineska
16.Октябрь.2017 13:03:48
9
Красиво. О том, что можно вложить условную конструкцию в саму формулу расчета, я не знала.
У меня получилось два варианта.
Первый вариант более компактный “Можно гулять или нет”
Код
var temperature = 0;
var itsRaining = false;
var minutes;
if ( temperature > 0 && temperature < 35 && !itsRaining) {
if (temperature > 20){
minutes = 20 - (temperature - 20);
console.log(‘Время прогулки ’ + minutes + ’ минут.’);
}
else {
minutes = temperature;
console.log(‘Время прогулки ’ + minutes + ’ минут.’);
}
}
else {
minutes = 0;
console.log(‘Время прогулки ’ + minutes + ’ минут.’);
}
Второй вариант более дружелюбный
Код
var temperature = 34;
var itsRaining = false;
var cold = 0;
var hot = 35;
var idealTemperature = 20;
var minutes;
console.log(‘Проверка данных…’);
if (!itsRaining){
console.log(‘Дождя нет, смотрим температуру воздуха…’);
if (temperature > cold) {
if (temperature < hot || idealTemperature === temperature) {
console.log(‘Не слишком жарко, температура воздуха ’ + temperature + ’ градусов’);
console.log('Считаем время прогулки… ')
if (temperature <= idealTemperature){
minutes = temperature;
console.log(‘Время прогулки ’ + minutes + ’ минут.’);
}
else {
minutes = idealTemperature - (temperature - idealTemperature);
console.log(‘Время прогулки ’ + minutes + ’ минут.’)
}
}
else {
minutes = 0;
console.log(‘Отрицательной температруры нет, но слишком жарко. Время прогулки ’ + minutes + ’ минут’);
}
}
else {
minutes = 0;
console.log(‘Температура воздуха ’ + temperature + ’ градус(ов). Время прогулки ’ + minutes + ’ минут’);
}
}
else {
minutes = 0;
console.log(‘Время прогулки ’ + minutes + ’ минут, т.к. идет дождь.’);
}
Ineska
16.Октябрь.2017 13:34:47
11
А мне первый нравится больше.
1 лайк
Zalman
16.Октябрь.2017 20:39:17
12
Решил привязался к температуре, потом ввел переменную “идеальная температура” и от нее уже вывел другую часть ветки. Не знаю правильно по логике или нет, но вроде без ошибок.
var temperature = 20;
var itsRaining = false;
var idealTem =20;
var minutes;
if (itsRaining || 0>temperature || temperature>35 ) {
minutes=0;
} else if(temperature <= 20) {
minutes=temperature
} else {
minutes=idealTem-(temperature-idealTem);
}
console.log(‘Прогулка длится ’ + minutes + ’ минут’);
Ineska
17.Октябрь.2017 05:30:15
13
В последнем выводе в консоль тоже сообщение по логике должно быть, а то число только выводится.
let temperature = 20;
let itsRaining = false;
let minutes;
if (itsRaining || temperature < 0 || temperature > 35) {
minutes=0;
} else if(temperature <= 20) {
minutes = temperature;
} else {
minutes = 20 - (temperature - 20);
}
Добрый день!
У меня получилось таким образом:
var temperature = 20;
var itsRaining = false;
var minutes;
if (itsRaining || temperature<0 || temperature>35) {
minutes=0;
}
else if (temperature>=0 && temperature<=20) {
minutes=(20-(20-temperature));
}
else if (temperature>20 && temperature<=35) {
minutes=(20-(temperature-20));
}
Но когда сначала было без “else”, вот таким образом:
var temperature = 20;
var itsRaining = false;
var minutes;
if (itsRaining || temperature<0 || temperature>35) {
minutes=0;
}
if (temperature>=0 && temperature<=20) {
minutes=(20-(20-temperature));
}
if (temperature>20 && temperature<=35) {
minutes=(20-(temperature-20));
}
испытание не засчитывалось и в первом тесте выдавало ошибку false
Не подскажете, почему так? Какое правило было нарушено?
Ineska
17.Октябрь.2017 16:59:22
17
Да, странная ситуация. Наверное, ожидается использование блока else, если условий несколько. Подождем комментария от модератора форума @juwain .
1 лайк
KorSer
17.Октябрь.2017 19:54:17
18
var temperature = 20;
var itsRaining = false;
var minutes;
if (!itsRaining && temperature == 20) {
console.log(minutes = 20)}
if (!itsRaining && temperature>20) {
console.log(minutes = 20-(temperature-20))}
if (!itsRaining && temperature<20) {
console.log(minutes = 20+(temperature-20))}
else if (itsRaining || temperature<=0 || temperature>=35){console.log(minutes=0)
};
Все прошло нормально.
Nikita
17.Октябрь.2017 22:36:49
19
У меня вот так получилось но не понимаю почему не работает .Может подскзать.Спасибо!
var temperature = 15;
var itsRaining = false;
var goodTemperature = temperature < 0 || temperature > 35;
var perfectTemp = 20;
var minutes;
//* РЕШЕНИЕ
if(!itsRaining && !goodTemperature){
if(perfectTemp) {
minutes=20;
console.log(‘Гуляем ’ + minutes + ’ минут’);
}
else {
minutes = 20-(goodTemperature-perfectTemp);
console.log('Тогда гуляем ’ + minutes + ‘минут’);
}
}
Nikita
18.Октябрь.2017 00:25:47
20
Решил вот так получилось:
var temperature = 20;
var itsRaining = false;
var perfTemp = 20;
var minutes;
if(!itsRaining && temperature > 0 && temperature < 36) {
if(temperature<20) {
minutes = temperature;
console.log(‘Прогулка длиться ‘+minutes+’ минут’);
}
if(temperature>20) {
minutes=perfTemp-(temperature-perfTemp);
console.log(‘Прогулка длиться ‘+minutes+’ минут’);
}
}
else {
minutes=0;
console.log(‘Длительность прогулки равняется ’ +minutes+’ минут’);
}
if(perfTemp) {
console.log(‘Идеальная прогулка на 20 минут’);
}
Konsta
18.Октябрь.2017 07:56:39
21
испытание засчитывается и вот так:
if (itsRaining||temperature<0||temperature>35){
minutes=0;
}
else{temperature>=0 && temperature<=20
minutes=(20-(20-temperature));
}
if(temperature>20 && temperature<35) {
minutes=(20-(temperature-20)) ;
}
juwain
18.Октябрь.2017 08:12:16
22
Спросил у авторов, ответим вскоре.