Сколько стоит ваш фронтенд?

Добрый день. Посмотрели ваш код. Проверка не проходит из-за того, что в представленном коде аргументы идут в неправильном порядке.

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

У меня получилось как то так, кажется, с учетом тем которые проходятся в этом курсе, это самый оптимальный вариант:

let rate = 1500;
let projectCost;

// Объявляем функцию
let getPrice = function (hours, urgent) {
  
  // Проверяем на срочность проекта
  if (urgent) {
    // Увеличиваем часы в 2 раза, а ставку уменьшаем в 2.5 раза
    hours /= 2;
    rate *= 2.5;
  }
  
  // Потом проверяем на общее кол-во часов
  if (hours > 150) {
    // Уменьшаем ставку на 250
    rate -= 250;
  }
  
  // Производим подсчет стоимости
  projectCost = rate * hours;
  
  // Возвращаем стоимость
  return projectCost;
};

let getPrice = function (timeHour, quick) {
let rate = 1500;
let cost;

if (quick) {
timeHour = timeHour / 2;
rate = rate * 2.5;
}

if (timeHour > 150) {
rate = rate - 250;
}
cost = rate * timeHour;
return cost;
}

getPrice();

Получилось так. Кто-нибудь подскажет, почему я не могу написать “let cost = rate * timeHour;” при объявлении переменных (а именно на 3ей строке), а не после if’ов? Просто если указать формулу при объявлении переменной, программа не будет подсчитывать, по ходу в процессе обучения что-то пропустил

let getPrice = function (hours, isUrgent) {

let rate = 1500;
let projectPrice = 0;
if (isUrgent) {
  hours *= 0.5;
  rate *= 2.5;
} 

if (hours > 150) {
  rate -= 250;  
}

projectPrice = hours * rate;
return projectPrice;

};

1 лайк

let getPrice = function (timeInHours, urgent) {
let rate = 1500;

if (urgent) {
timeInHours /= 2;
rate *= 2.5;
}

if (timeInHours > 150) {
rate -= 250;
}

return rate * timeInHours;
}

Мой вариант

let getPrice = function (hours, terns) {
let salary = 1500;
if (terns) {
salary *= 2.5;
hours /= 2;
};

if (hours > 150) {
salary -= 250;
};

let price = hours * salary;
return price;
};

Code

let price = 1500;
let getPrice = function (t, urgence) {
if (urgence=== true) {
price = 2.5price;
t= t/2;
}
if (t>150) {
price -= 250;
}
return t
price;
}
console.log ('Price of general project '+getPrice (150, false) );
console.log ('Price of urgent project '+getPrice (200, true));

Результаты тренажера

Вопрос: объясните пожалуйста, почему выдается ошибка при прохождении тренажера, если мы объявим цену за час занятия (let price = 1500;) вне функции?

Но если мы её вносим в функцию то сразу всё ок, хотя по логике это не должно влиять, так как мы переопределяем переменную внутри функции и в ней же проводим вычсления.

Заранее, спасибо за разъяснение!)

Вот простое решение, вдруг кому-то нужно ( без отрицаний и взаимоисключающих else if):

 let getPrice = function(time, isUrgent) {
  let fixPrice = 1500;
  
  if(isUrgent) {
    time /= 2;
    fixPrice *= 2.5;
  }
  
  if(time > 150) {
    fixPrice -= 250;
  }
  price = time * fixPrice;
  return price;
}
1 лайк

Код js исполняется сверху - вниз, думаю в таком случае переменные внутри if-ов поменяют свое значение уже после исполения 3 строчки, а следовательно в cost останется их старое значение. По крайней мере метод “тыка” подтверждает эту теорию

у меня так вышло

let getPrice = function(time, fast) {
let rate = 1500;
if (fast) {
time /= 2;
rate *= 2.5;
}
if (time > 150) {
rate -= 250;
}
getPrice = time * rate;
return getPrice
}

2021-10-06_19-52-42

let getPrice = function(timeInHour, isProjectImmediate) {
  
  let pricePerHour = 1500;
  
  if (isProjectImmediate) {
    (timeInHour/=2) * (pricePerHour*=2.5);  
  }
  
  if (timeInHour > 150) {
    pricePerHour-=250;  
  }
  
  return timeInHour * pricePerHour;
  
}

let getPrice = function (hours, urgency) {
let fix = 1500;

if (urgency) {
fix = fix * 2.5;
hours = hours / 2;
}

if (hours > 150) {
fix -= 250;
}

return fix * hours;

};

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

Потому что задания бредовые совершенно и условия понятны только тем, кто создавал данное задание.

function getPrice(timeInHour, isUrgentProject) {
  let perHour = 1500;
  
  if (isUrgentProject) {
    timeInHour /= 2;
    perHour *= 2.5;
    }
    
  if (timeInHour > 150) perHour -= 250;
    
  return timeInHour * perHour; 
  }

Порой, при решении некоторых задач, приходила мысль и негодование , на тему: “что за дуболомы пишут все эти задачи?”, ничего же не понятно!!! . Однажды пришло отрезвление, задумался над тем как построен мой процесс обучения. Получилось, что я просто галопом, с наскоку, пытаюсь проскочить курсы, а в результате, через некоторое время, почти ничего не могу воспроизвести самостоятельно.
Начал с малого, листочек + ручка + задача, с которой в очередной раз не смог разобраться.
Разбирал посимвольно практически, на следующий день и далее возвращаясь к ней снова и снова. Это не отменяло, разбор новых тем. И так со всем что я не мог воспроизвести через неделю.
К примеру, прошёл главу “Массивы”, разобрал. Через неделю возвращаюсь к решению финальных задач по темам внутри главы. За эту неделю уже набрал ряд других знаний, уже приступил к ‘Браузерному JS’. А далее, всё больше погружаясь в тему JS, так или иначе, постоянно обращался к массивам, и в один прекрасный момент понял, что трудностей больше не возникает. И так по каждой теме.
На данный момент, занимаюсь решением всех задач которые были в курсе «Погружение в Javascript» параллельно изучая JS на другом ресурсе. Вчера понял, у меня сложности с сортировкой массива, листочек + ручка + задача, пробел устранил. Позже проверю на сколько хорошо усвоил.
Вот так товарищи. Теперь у меня нет вопросов к создателям курсов, есть понимание необходимости работать над собой, если ты что то не понимаешь. Трудолюбие, желание заниматься программированием, усидчивость и практика, практика, практика…

1 лайк

Задания становятся понятны по мере того как вы начинаете понимать больше… я раньше тоже думал что плохие задания. Вернулся сюда после learn.js и все задания стали понятны… конкретно в этой задаче все очень по пунктам расписано, да еще и в шпаргалке после курса решение написано)

let getPrice = (time,isFast) =>{
let pricePerHour = 1500
if(isFast){
time/=2
pricePerHour*=2.5
}
if(time>150){
pricePerHour -=250
}
return time*pricePerHour
}