Main.kt

Main.kt #

Назад к списку файлов.

fun main() {
    val numbers = readIntSequence()
    val statistics = findStatistics(numbers)
    println("Вы ввели последовательность: $numbers")
    println("Максимальное значение: ${statistics.max}")
    println("Минимальное значение: ${statistics.min}")
    println("Среднее значение: ${statistics.mean}")
}

fun readIntSequence() : List<Int> {
    val ints = mutableListOf<Int>()
    while(true) {
        print("Введите число или 'done'> ")
        val string = readlnOrNull()
        if (string == null || string.trim() == "done") break
        try {
            val number = string.toInt()
            ints.add(number)
        } catch (_: NumberFormatException) {
            println("Вы ввели не число")
        }
    }
    return ints
}

data class IntStatistics(val min: Int, val max: Int, val mean: Float)

fun findStatistics(numbers: List<Int>) : IntStatistics {
    val sortedNumbers = numbers.sorted()
    val minimum = sortedNumbers.first()
    val maximum = sortedNumbers.last()
    val mean = sortedNumbers.reduce { sum, element -> sum + element } / sortedNumbers.size.toFloat()
    return IntStatistics(minimum, maximum, mean)
}

© A. M. Васильев, 2022, CC BY-SA 4.0, andrey@crafted.su