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


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