Загрузка данных
#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;
}