#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;
}