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


fun main() {
    // 1. Создаем массивы на 25 стран
    val countries = arrayOf(
        "Россия", "Канада", "Китай", "США", "Бразилия",
        "Австралия", "Индия", "Аргентина", "Казахстан", "Алжир",
        "ДР Конго", "Саудовская Аравия", "Мексика", "Индонезия", "Судан",
        "Ливия", "Иран", "Монголия", "Перу", "Чад",
        "Нигер", "Ангола", "Мали", "ЮАР", "Колумбия"
    )

    // Площадь в тыс. кв. км (чтобы числа были компактнее)
    val area = doubleArrayOf(
        17098.0, 9985.0, 9597.0, 9834.0, 8516.0,
        7692.0, 3287.0, 2780.0, 2725.0, 2382.0,
        2345.0, 2150.0, 1964.0, 1905.0, 1861.0,
        1760.0, 1648.0, 1564.0, 1285.0, 1284.0,
        1267.0, 1247.0, 1240.0, 1221.0, 1142.0
    )

    // Население в млн человек
    val population = doubleArrayOf(
        146.0, 38.0, 1411.0, 331.0, 214.0,
        25.0, 1380.0, 45.0, 19.0, 44.0,
        90.0, 35.0, 126.0, 273.0, 43.0,
        7.0, 84.0, 3.3, 33.0, 16.0,
        24.0, 33.0, 20.0, 59.0, 51.0
    )

    val n = countries.size

    // пункт 1: Вывод всех записей
    println("--- 1. Список стран ---")
    for (i in 0 until n) {
        println("Страна: ${countries[i]} - Площадь: ${area[i]} тыс. кв.км - Население: ${population[i]} млн чел.")
    }

    // пункт 2: Плотность населения (чел/кв.км) и поиск max/min
    val density = DoubleArray(n)
    var maxDenseIndex = 0
    var minDenseIndex = 0

    for (i in 0 until n) {
        // переводим млн и тыс в обычные числа: (население * 1 000 000) / (площадь * 1 000)
        density[i] = (population[i] * 1000) / area[i]

        if (density[i] > density[maxDenseIndex]) {
            maxDenseIndex = i
        }
        if (density[i] < density[minDenseIndex]) {
            minDenseIndex = i
        }
    }

    println("\n--- 2. Плотность населения ---")
    println("Самая густонаселенная: ${countries[maxDenseIndex]} (${density[maxDenseIndex].toInt()} чел/кв.км)")
    println("Самая редконаселенная: ${countries[minDenseIndex]} (${density[minDenseIndex].toInt()} чел/кв.км)")

    // пункт 3: Общее население и страны с >50% населения
    var totalPopulation = 0.0
    for (i in 0 until n) {
        totalPopulation += population[i]
    }

    println("\n--- 3. Население мира ---")
    println("Общее население списка: $totalPopulation млн чел.")

    // Ищем крупные страны с наибольшим населением
    val used = BooleanArray(n)
    var sumPop = 0.0
    var count50 = 0

    print("Страны, составляющие более 50% населения: ")
    while (sumPop <= totalPopulation / 2) {
        var maxIndex = -1
        for (i in 0 until n) {
            if (!used[i] && (maxIndex == -1 || population[i] > population[maxIndex])) {
                maxIndex = i
            }
        }
        used[maxIndex] = true
        sumPop += population[maxIndex]
        count50++
        print("${countries[maxIndex]}; ")
    }
    println("\nКоличество таких стран: $count50")

    // пункт 4: Во сколько самая маленькая страна меньше самой большой
    var maxAreaIndex = 0
    var minAreaIndex = 0

    for (i in 0 until n) {
        if (area[i] > area[maxAreaIndex]) maxAreaIndex = i
        if (area[i] < area[minAreaIndex]) minAreaIndex = i
    }

    val areaRatio = area[maxAreaIndex] / area[minAreaIndex]
    println("\n--- 4. Сравнение площадей ---")
    println("Самая маленькая страна (${countries[minAreaIndex]}) меньше самой большой (${countries[maxAreaIndex]}) в ${areaRatio.toInt()} раз(а).")

    // пункт 5: Средняя плотность населения и выводы
    var totalArea = 0.0
    for (i in 0 until n) {
        totalArea += area[i]
    }

    val avgDensity = (totalPopulation * 1000) / totalArea
    var aboveAvgCount = 0
    var belowAvgCount = 0

    for (i in 0 until n) {
        if (density[i] >= avgDensity) {
            aboveAvgCount++
        } else {
            belowAvgCount++
        }
    }

    println("\n--- 5. Выводы по средней плотности ---")
    println("Средняя плотность: ${avgDensity.toInt()} чел/кв.км")
    println("Стран с плотностью выше средней: $aboveAvgCount")
    println("Стран с плотностью ниже средней: $belowAvgCount")
}