Загрузка данных


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("Ошибка")
    }
}