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


#include <iostream>
#include <string>

using namespace std;

const int SIZE = 20;

// 1. Перечисляемый тип (enum)
enum TrenchType { FAULT, RIDGE, GUTTER }; 

// 2. Вложенная структура (океан)
struct Location {
    string ocean;
};

// 3. Основная структура
struct Trench {
    string name;
    int depth;
    Location loc;
    TrenchType type;
};

// Функция вывода (обертка)
void printTrench(Trench t) {
    string types[] = { "Разлом", "Хребет", "Желоб" };
    cout << t.name << " | Глубина: " << t.depth 
         << " | Океан: " << t.loc.ocean 
         << " | Тип: " << types[t.type] << endl;
}

// 4. Инициализация данных (без клавиатуры)
void init(Trench tr[]) {
    Trench data[SIZE] = {
        {"Марианская", 11022, {"Тихий"}, GUTTER},
        {"Тонга", 10882, {"Тихий"}, GUTTER},
        {"Филиппинская", 10540, {"Тихий"}, GUTTER},
        {"Кермадек", 10047, {"Тихий"}, GUTTER},
        {"Пуэрто-Рико", 8376, {"Атлантический"}, GUTTER},
        {"Южно-Сандвичев", 8428, {"Атлантический"}, GUTTER},
        {"Романш", 7760, {"Атлантический"}, FAULT},
        {"Кайман", 7686, {"Атлантический"}, FAULT},
        {"Яванская", 7725, {"Индийский"}, GUTTER},
        {"Диамантина", 8047, {"Индийский"}, FAULT},
        {"Перуанская", 8065, {"Тихий"}, GUTTER},
        {"Алеутская", 7679, {"Тихий"}, GUTTER},
        {"Рюкю", 7507, {"Тихий"}, GUTTER},
        {"Идзу-Бонин", 9810, {"Тихий"}, GUTTER},
        {"Яп", 8527, {"Тихий"}, GUTTER},
        {"Палау", 8138, {"Тихий"}, GUTTER},
        {"Центральноамериканская", 6669, {"Тихий"}, GUTTER},
        {"Сан-Кристобаль", 9165, {"Тихий"}, GUTTER},
        {"Милуоки", 8380, {"Атлантический"}, GUTTER},
        {"Витязь", 6150, {"Тихий"}, RIDGE}
    };
    for(int i = 0; i < SIZE; i++) tr[i] = data[i];
}

// Задание: Посчитать впадины глубже 7000 метров
void countDeep(Trench tr[]) {
    int count = 0;
    for(int i = 0; i < SIZE; i++) {
        if(tr[i].depth > 7000) count++;
    }
    cout << "Впадин глубже 7000м: " << count << endl;
}

// Задание: Сортировка желобов по океанам (пузырек)
void sortByOcean(Trench tr[]) {
    Trench gutters[SIZE];
    int k = 0;
    // Копируем только желобные впадины
    for(int i = 0; i < SIZE; i++) {
        if(tr[i].type == GUTTER) gutters[k++] = tr[i];
    }

    // Пузырек
    for(int i = 0; i < k - 1; i++) {
        for(int j = 0; j < k - i - 1; j++) {
            if(gutters[j].loc.ocean < gutters[j+1].loc.ocean) {
                Trench temp = gutters[j];
                gutters[j] = gutters[j+1];
                gutters[j+1] = temp;
            }
        }
    }
    cout << "\n--- Желоба отсортированные по океану ---" << endl;
    for(int i = 0; i < k; i++) printTrench(gutters[i]);
}

// Задание: Изменение глубины конкретной впадины
void changeDepth(Trench tr[], int oldDepth, int newDepth) {
    for(int i = 0; i < SIZE; i++) {
        if(tr[i].depth == oldDepth) {
            tr[i].depth = newDepth;
            cout << "\nГлубина изменена для: " << tr[i].name << endl;
            return;
        }
    }
}

int main() {
    setlocale(LC_ALL, "Russian");
    Trench myTrenches[SIZE];

    init(myTrenches);           [span_7](start_span)// Заполняем массив[span_7](end_span)
    countDeep(myTrenches);      [span_8](start_span)// Считаем глубокие[span_8](end_span)
    sortByOcean(myTrenches);    [span_9](start_span)// Сортируем желоба[span_9](end_span)
    changeDepth(myTrenches, 11022, 11034); [span_10](start_span)// Меняем данные[span_10](end_span)

    return 0;
}