Добрый день. Посмотрели ваш код. Проверка не проходит из-за того, что в представленном коде аргументы идут в неправильном порядке.
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;
};
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 tprice;
}
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;
}
Код 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
}
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 на другом ресурсе. Вчера понял, у меня сложности с сортировкой массива, листочек + ручка + задача, пробел устранил. Позже проверю на сколько хорошо усвоил.
Вот так товарищи. Теперь у меня нет вопросов к создателям курсов, есть понимание необходимости работать над собой, если ты что то не понимаешь. Трудолюбие, желание заниматься программированием, усидчивость и практика, практика, практика…
Задания становятся понятны по мере того как вы начинаете понимать больше… я раньше тоже думал что плохие задания. Вернулся сюда после learn.js и все задания стали понятны… конкретно в этой задаче все очень по пунктам расписано, да еще и в шпаргалке после курса решение написано)
let getPrice = (time,isFast) =>{
let pricePerHour = 1500
if(isFast){
time/=2
pricePerHour*=2.5
}
if(time>150){
pricePerHour -=250
}
return time*pricePerHour
}