@spoT1

Проблема с ветвлением else if?

let w = prompt('Какой твой вес?')
let h = prompt('Какой твой рост')

if(w/(h/100*h/100)<18.5){
alert('Обратитесь к врачу, у вас дефицит массы')
}
else if(w/(h/100*h/100)>=18.5 && w/(h/100*h/100)<=24.9){
alert('Нормальная масса тела')

}
else if(w/(h/100*h/100)>=25 && w/(h/100*h/100)<=29.9){
alert('У вас предожирение')

}
else if(w/(h/100*h/100)>=30 && w/(h/100*h/100)<=34.9){
alert('Обратитесь к врачу, 1 степень ожирения')

}
else if(w/(h/100*h/100)>=35 && w/(h/100*h/100)<=39.9){
alert('Обратитесь срочно к врачу, 2 степень ожирения')

}
else if(w/(h/100*h/100)>40){
alert('У вас огромные проблемы, 3 степень ожирения')
}
else if(w < 0 || h < 0 || typeof w == 'string' || typeof h == 'string'){
alert('Введите корректное число')
}

Вот код, когда число отрицательно все равно считает, как пофиксить
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
@DAnya78
надо было ошибку в начало поместить
let w = prompt('Какой твой вес?')
let h = prompt('Какой твой рост')
if(w < 0 || h < 0 || typeof w == 'string' || typeof h == 'string'){
alert('Введите корректное число')
}
else if(w/(h/100*h/100)>=18.5 && w/(h/100*h/100)<=24.9){
alert('Нормальная масса тела')

}
else if(w/(h/100*h/100)>=25 && w/(h/100*h/100)<=29.9){
alert('У вас предожирение')

}
else if(w/(h/100*h/100)>=30 && w/(h/100*h/100)<=34.9){
alert('Обратитесь к врачу, 1 степень ожирения')

}
else if(w/(h/100*h/100)>=35 && w/(h/100*h/100)<=39.9){
alert('Обратитесь срочно к врачу, 2 степень ожирения')

}
else if(w/(h/100*h/100)>40){
alert('У вас огромные проблемы, 3 степень ожирения')
}
else if(w/(h/100*h/100)<18.5){
alert('Обратитесь к врачу, у вас дефицит массы')
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Вот код, когда число отрицательно все равно считает, как пофиксить
Во первых открыть для себя switch case конструкцию. Во вторых включить голову и обозначить граничные условия. А так же дотумкать почему у вас при отрицательном весе будет дефицит массы )
Ответ написан
@Al6xand6r
Проверяйте корректность введенных данных в отдельном методе, сразу после их получения. А основная логика должна вычисляться только с корректными данными.
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Вместо массы одинаковых вычислений, вынесите хотя бы для начала w/(h/100*h/100) в отдельную переменную - сразу станет на порядок проще и читабельнее)
Я уже молчу о том, что границы заданы абы как, что если окажется 24.95, попадающий между диапазонами [18.5, 24.9] и [25, 29.9].
И основное: сначала валидируем числа, а потом уже производим над ними арифметические операции.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы