typealias Operation = (Double, Double) -> Double
fun calculate(
a: Double,
b: Double,
operation: Operation
): Double {
return operation(a, b)
}
fun main() {
val operations = mapOf<String, Operation>(
"+" to { a, b -> 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 -> Math.pow(a, b) },
"max" to { a, b -> maxOf(a, b) }
)
val a = readln().toDouble()
val b = readln().toDouble()
val sign = readln()
val operation = operations[sign]
if (operation != null) {
println(calculate(a, b, operation))
} else {
println("Ошибка")
}
}