Добрый день.
Это первый тест:
"Первый тест. Время в часах: 200 , срочный ли проект: true . Ожидаемая стоимость: 375000"
Здесь: время в часах > 150, а значит фиксированная ставка (1500) * 2,5 и - 250.
Так как это true, то часов соответственно 100.
Итого: 100 часов * ((1500 * 2,5) - 250) = 350000.
В задании ожидаемая стоимость 375000 рублей.
Где ошибка?
Спасибо.
Здравствуйте. Программа прошла все проверки вот в таком виде из-за этого я долго мучился в следующем задании, а ошибка была именно тут(в закоментированном виде добавил в код исправление) + не знаю, как избавиться от повторений в коде, подскажите пожалуйста
var getPrice = function (time, isQuickly)
{
var rate = 1500;
var price = time*rate;
if(isQuickly){
time /= 2;
rate *= 2.5
if(time>150){
rate -= 250
price = time * rate}
else{
price = time * rate}
}
else{
if(time>150){rate -=250;
//price = time * rate
}
}
return price
}
Я чего-то путаю или тест неправильный? Получается что у нас сначала отрабатывает срочность проекта - (time > 150 ? time/2*1250*2.5 : time/2*1500*2.5), далее проверяется на кол-во времени и срабатывает time/2*1250*2.5.
Т.е.у нас срочный проект, поэтому время уменьшается в два раза time/2, при этом т.к. ставка у нас уменьшается на 250, и одновременно с этим увеличивается на 2.5 то ответ никак не будет при первом тесте 375.000
Всеравно логика, по-моему, нарушена. Т.е. у нас ставка за проект 1500 и сначала у нас умножается на 2.5, а только потом уже из этой ставки вычитается 250
А насчет тернарников, не считаю их злом и в данном случае читабельность кода никак не ухудшается
тернарные операторы используют тогда, когда иначе придется городить что-то банальное типо:
if (smth) { a = 1; } else { a = 2;}
или if (smth) { return 1; } else { return 2;}
в других случаях это ухудшает чтение и их использовать - не лучшая идея. вы даже сами запутались в логике, но упорно продолжаете их использовать в таком случае.
Добрового времени суток, дамы и господа, собственно вот мой вариант решения, при подставлении вариантов из проверки - в “консоль” выводит тот же вариант ответа, что должен быть, однако при нажатие на проверку, выдает при всех срочных 1875, а в не срочном 0, как так-то?
Добрый день. Дело в том, что аргументы в вашей функции поменяны местами. То есть, булево значения передаётся в hours, а hours в булево значение. Для достижения 100% достаточно поменять их местами.
Мой вариант:
var getPrice = function (time, important) {
var bet = 1500;
if (important) {
time *= 0.5
bet *= 2.5
}
if (time > 150) {
bet -= 250
}
return bet * time;
}
Добрый день. Помогите разобраться. Код работает. значения на выходе верные, но почему-то проверку не проходит. В чем проблема?
function getPrice (urgency, time) {
var fixMoney = 1500;
if (urgency && (time/2) >= 150) {
time /=2;
fixMoney = ((fixMoney *2.5) - 250)
} else if (urgency) {time /=2; fixMoney *= 2.5
} return time * fixMoney