+ 1

Kotlin, задача «Стоимость парковки»

Уважаемые знатоки, помогите с задачей. Сделал, ответы выдает правильные, но не проходит 3, 5 и 6 тест кейсы. Sololearn пишет: «Почти получилось! Убедись в правильности кода и попробуй еще». Ошибок не выдает, не могу понять, что не так.. Задание такое: «Вы создаете приложение для парковки, которое должно рассчитывать и выводить сумму к оплате, исходя из количества часов, в течение которых автомобиль находился на парковке. Оплата рассчитывается на основе следующей структуры цен: - первые 5 часов оплачиваются из расчета $1 в час. - после этого, каждый час оплачивается из расчета $0,5 в час. - за каждые 24 часа, взимается фиксированная плата $15. Это означает, что, например, если автомобиль был на парковке 26 часов, стоимость должна составлять 15+(2*0.5) = 16.0, потому что автомобиль был припаркован 24 часа плюс 2 дополнительных часа. Пример Входных Данных: 8 Пример Выходных Данных: 6.5 Объяснение: первые 5 часов оплачиваются из расчета $1 в час, из чего получается $5. После этого, следующие 3 часа оплачиваются из расчета $0,5 в час = $1,5. Поэтому, общая сумма составит $5+$1,5 = $6,5 Выходные данные должны иметь тип Double, даже если сумма является круглым числом.» Мой код такой: fun main(args: Array<String>) { var hours = readLine()!!.toInt() var total: Double = 0.0 var a:Int when { hours in 1..5 -> total=hours*1.0 hours in 6..23 -> { a=hours-5 total=a*0.5+5.0 } hours >= 24 -> { a=hours-24 total=a*0.5+15.0 } } println(total) }

6th Dec 2021, 2:42 PM
Alexander
4 Respostas
+ 1
Обсуждалась уже: https://www.sololearn.com/Discuss/2702932/?ref=app 48 часов должны стоить 30. У тебя 27
6th Dec 2021, 3:07 PM
Alexey Kopyshev
Alexey Kopyshev - avatar
+ 4
Only as a hint, what's also possible : fun main(args: Array<String>) { var h = readLine()!!.toInt() println ( when { h < 6 -> h*1.0 h < 24 -> 5+(h-5)*0.5 else -> 15*(h/24) + 0.5*(h%24) } ) }
6th Dec 2021, 4:07 PM
Coding Cat
Coding Cat - avatar
+ 3
Большое спасибо! С помощью ссылки понял, где ошибка. Всё работает! В итоге код такой: fun main(args: Array<String>) { var hours = readLine()!!.toInt() var total: Double = 0.0 var a:Int var b:Int when { hours in 0..5 -> total=hours*1.0 hours in 6..23 -> { a=hours-5 total=a*0.5+5.0 } hours == 24 -> total=15.0 hours > 24 -> { a=hours/24.toInt() b=hours%24 total=(a*15)+(b*0.5) } } println(total) }
6th Dec 2021, 3:30 PM
Alexander
+ 3
Coding Santa, thanks! It's very compact)) Great!
6th Dec 2021, 4:16 PM
Alexander