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


#include <iostream>
#include <string>
#include <vector>

#ifdef _WIN32
#include <windows.h>
#endif

using namespace std;

// Определение структуры согласно варианту 12 (28)
struct State {
    string name;
    string capital;
    long long population;
    double area;
    string president;
};

// Функция для ввода данных
void inputState(vector<State>& states) {
    State s;
    cout << "Введите наименование государства: ";
    cin.ignore();
    getline(cin, s.name);
    
    cout << "Введите столицу: ";
    getline(cin, s.capital);
    
    cout << "Введите численность населения: ";
    cin >> s.population;
    
    cout << "Введите площадь: ";
    cin >> s.area;
    
    cout << "Введите фамилию президента: ";
    cin >> s.president;
    
    states.push_back(s);
    cout << "Государство успешно добавлено!\n";
}

// Функция для вывода всех записей
void printStates(const vector<State>& states) {
    if (states.empty()) {
        cout << "Список государств пуст.\n";
        return;
    }
    cout << "-------------------------------------------------------------\n";
    for (const auto& s : states) {
        cout << "Государство: " << s.name 
             << " | Столица: " << s.capital 
             << " | Население: " << s.population 
             << " | Площадь: " << s.area 
             << " | Президент: " << s.president << endl;
    }
    cout << "-------------------------------------------------------------\n";
}

// Поиск государства по названию
void searchByName(const vector<State>& states) {
    if (states.empty()) {
        cout << "Список государств пуст.\n";
        return;
    }
    string target;
    cout << "Введите название государства для поиска: ";
    cin.ignore();
    getline(cin, target);
    
    bool found = false;
    cout << "--- Результаты поиска ---\n";
    for (const auto& s : states) {
        if (s.name == target) {
            cout << "Столица: " << s.capital 
                 << " | Население: " << s.population 
                 << " | Площадь: " << s.area 
                 << " | Президент: " << s.president << endl;
            found = true;
        }
    }
    if (!found) {
        cout << "Государство с таким названием не найдено.\n";
    }
}

// Выборка государств по площади (больше заданного значения)
void searchByArea(const vector<State>& states) {
    if (states.empty()) {
        cout << "Список государств пуст.\n";
        return;
    }
    double minArea;
    cout << "Введите минимальное значение площади: ";
    cin >> minArea;
    
    bool found = false;
    cout << "--- Государства с площадью больше " << minArea << " ---\n";
    for (const auto& s : states) {
        if (s.area > minArea) {
            cout << "Государство: " << s.name << " | Площадь: " << s.area << endl;
            found = true;
        }
    }
    if (!found) {
        cout << "Государств, удовлетворяющих условию, не найдено.\n";
    }
}

int main() {
    // Поддержка кириллицы в консоли Windows
#ifdef _WIN32
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
#endif

    vector<State> states;
    int choice;

    do {
        cout << "\n=== МЕНЮ: СПРАВОЧНИК ГОСУДАРСТВ ===\n";
        cout << "1. Добавить государство\n";
        cout << "2. Вывести весь список\n";
        cout << "3. Поиск государства по названию\n";
        cout << "4. Выборка по площади (больше заданной)\n";
        cout << "0. Выход\n";
        cout << "Ваш выбор: ";
        
        while (!(cin >> choice)) {
            cout << "Ошибка ввода. Введите число: ";
            cin.clear();
            cin.ignore(10000, '\n');
        }

        switch (choice) {
            case 1: 
                inputState(states); 
                break;
            case 2: 
                printStates(states); 
                break;
            case 3: 
                searchByName(states); 
                break;
            case 4: 
                searchByArea(states); 
                break;
            case 0: 
                cout << "Завершение работы.\n"; 
                break;
            default: 
                cout << "Неверный выбор. Попробуйте снова.\n";
        }
    } while (choice != 0);

    return 0;
}