Соло Изучите на практике, как рассчитать плату за парковку на основе некоторых условий в Котлине

#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) }