#kotlin
Вопрос:
Вы создаете программное обеспечение для парковки автомобилей, которое должно рассчитать и вывести причитающуюся сумму в зависимости от количества часов, в течение которых автомобиль был припаркован. Плата рассчитывается исходя из следующей структуры цен:
- первые 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 доллара
Приведенный ниже код работает нормально, однако он не удовлетворяет всем условиям, которые скрыты
fun main(args: Arraylt;Stringgt;) { var hours = readLine()!!.toInt() var total: Double = 0.0 total = when{ hours lt;= 5 -gt; { val cost = hours *1.toDouble() cost } hours in 6..23 -gt; { val cost = 5 (hours - 5) * 0.5 cost } hours == 24 -gt; { val cost = 15.toDouble () cost } else -gt; { val cost = 15 (hours -24) * 0.5 cost } } println(total ) }
Ответ №1:
Один случай, который, я думаю, вы пропустили, заключается в том, что hours gt; 24
вы всегда используете 15 долларов, в то время как в соответствии с вопросом это 15 долларов в день, поэтому вам нужно умножить его на количество дней.
Попробуйте этот код:
fun main(args: Arraylt;Stringgt;) { val hours = readLine()!!.toInt() val total = when { hours gt;= 24 -gt; 15 * (hours / 24) 0.5 * (hours % 24) hours gt; 5 -gt; 5 (hours - 5) * 0.5 else -gt; hours.toDouble() } println(total) }