fun main() { println("Система расчёта штрафов Германии") val carSpeed = 90 val isTown = true printFine(calculateFine(carSpeed, isTown)) check(60, 30, true) check(70, 70, true) check(80, 180, true) check(90, 260, true) check(100, 400, true) check(110, 560, true) check(120, 700, true) check(130, 800, true) check(140, 800, true) check(60, 0, false) check(70, 0, false) check(80, 0, false) check(90, 0, false) check(100, 20, false) check(110, 60, false) check(120, 150, false) check(130, 200, false) check(140, 320, false) } fun printFine(fine: Int) { if (fine == 0) { println("Скорость не превышена") } else { println("Штраф: $fine евро") } } fun check(carSpeed: Int, fine: Int, isTown: Boolean) { if (calculateFine(carSpeed, isTown) != fine) { println( "Неверный штраф $fine для скорости $carSpeed. " + "Рассчитанный штраф ${calculateFine(carSpeed, isTown)}" ) } else { println("Штраф $fine для скорости $carSpeed рассчитан верно") } } fun calculateFine(carSpeed: Int, isTown: Boolean): Int { val maxSpeed = if (isTown) 50 else 90 val overSpeed = carSpeed - maxSpeed if (overSpeed <= 0) { return 0 } return when (overSpeed) { in 1..10 -> if (isTown) 30 else 20 in 11..15 -> if (isTown) 50 else 40 in 16..20 -> if (isTown) 70 else 60 in 21..25 -> if (isTown) 115 else 100 in 26..30 -> if (isTown) 180 else 150 in 31..40 -> if (isTown) 260 else 200 in 41..50 -> if (isTown) 400 else 320 in 51..60 -> if (isTown) 560 else 480 in 61..70 -> if (isTown) 700 else 600 else -> if (isTown) 800 else 700 } }