import kotlin.math.pow
typealias Operation = (Double, Double) -> Double
fun calculate(a: Double, b: Double, operation: Operation): Double = operation(a, b)
fun main() {
val operations = mapOf(
"+" to { a: Double, b: Double -> a + b },
"-" to { a, b -> a - b },
"*" to { a, b -> a * b },
"/" to { a, b -> if (b == 0.0) Double.NaN else a / b },
"%" to { a, b -> a % b },
"^" to { a, b -> a.pow(b) },
"max" to { a, b -> maxOf(a, b) }
)
println("Введите первое число:")
val a = readln().toDouble()
println("Введите второе число:")
val b = readln().toDouble()
println("Введите операцию (+, -, *, /, %, ^, max):")
val op = readln()
val result = operations[op]?.let { calculate(a, b, it) }
if (result == null) {
println("Ошибка: операция '$op' не найдена")
} else {
println("$a $op $b = $result")
}
}