CrewCut
@CrewCut
Коплю силы на переезд в тропики

Как построить формулу для подсчета стоимости, если коэффициент зависит от диапазона вводимого числа?

Вводится число, которое при подсчете умножается на коэффициент. Однако, коэффициент зависит от нескольких интервалов, т.е.:
Если число в интервале 300-1000, то коэффициент = 1;
Если число в интервале 1001-2000, то коэффициент = 2;
Если число в интервале 2001-3000, то коэффициент = 3;

Итоговая сумма должна считаться так, что если ввели 2800, то сперва сложится по первому интервалу, потом по второму и потом по третьему (1000+4000+2400). Подскажите, как правильно написать такую формулу, как задать диапазоны и коэффициенты на JS? Сейчас сделал говнокод с кучей if else, но уверен что есть адекватнее решение, может с помощью массива?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
@Aves
Вопрос для телепатов, что ли? Моло того, что в условии ошибка:
Если число в интервале 300-1000, то коэффициент = 1;
Если число в интервале 1001-2000, то коэффициент = 2;
Если число в интервале 2001-3000, то коэффициент = 3;

ввели 2800

1000+4000+2400

Так ещё нужно догадаться, что
у каких-то интервалов коэффициент может быть даже нулевым

Вот вариант с передачей верхних границ интервалов и коэффициентов:
function calc(n, ranges, factors) {
  let res = 0;
  let i = 0;
  while (n > ranges[i]) res += (ranges[i] - (ranges[i - 1]||0)) * factors[i++];
  return res > 0 ? res + (n - ranges[i - 1]) * (factors[i]||factors[i - 1]) : n * factors[i];
}

calc(2800, [1000, 2000, 3000], [1, 2, 3]); // 5400
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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