Испытание: не трать деньги понапрасну

Подскажите пожалуйста, проходит только вторая и третья проверка. Не могу понять, в чём ошибка?

var price = 1500;
var cost;
var getPrice = function (time,speed) {
if (speed) {
time = time / 2;
price = price * 2.5;
}
if (time > 150) {
price = price - 250;
}
cost = price * time;
return cost;
}

var getProfitableProject = function (time, profit) {
var speedproject = getPrice(time,true) - profit;
var normalproject = getPrice(time,false);
var result;
if (speedproject > normalproject) {
result = 'Выгодней обычный проект. Потратишь на него ’ + normalproject;
}
else {
result = 'Выгодней срочный проект. Потратишь на него ’ + speedproject;
}
return result;
}

Перенесите строку var price = 1500; внутрь функции, иначе цена складывается при каждом вызове функции getPrice.

1 лайк

Моя версия решения задания. Версия работает.

var getPrice = function(time, speed) {
var stavka = 1500;
if (speed) {
time /= 2;
stavka *= 2.5;
}
if (time > 150){
stavka -= 250;
}
return time * stavka;
}

var getProfitableProject = function (time, profit) {
var speedProject = getPrice(time, true) - profit;
var normalProject = getPrice(time, false);
if ( speedProject < normalProject ) {
return 'Выгодней срочный проект. Потратишь на него ’ + speedProject;
} else {
return 'Выгодней обычный проект. Потратишь на него ’ + normalProject;
}
}

1 лайк

чуть приятней выглядит

let getPrice = (hours, urgent) => {
  let rate = 1500;// фиксированная ставка в рублях
  // Если проект срочный, уменьшаем часы в 2 раза и повышаем ставку в 2.5 раза
  if (urgent) {
    hours /= 2;
    rate *= 2.5;
  }
  // Если время проекта больше 150 часов, уменьшаем ставку на 250 рублей
  if (hours > 150) {
    rate -= 250;
  }
  return hours * rate;
}


let getProfitableProject = (hours, urgentProfit) => {
  let urgentPrice = getPrice(hours, true) - urgentProfit;
  let normalPrice = getPrice(hours, false);

  return (urgentPrice < normalPrice) ?
    'Выгодней срочный проект. Потратишь на него ' + urgentPrice :
    'Выгодней обычный проект. Потратишь на него ' + normalPrice;
}