#include <iostream>
#include <windows.h>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
//bool empty = true;
int n, i;
fstream cities;
struct ratio {
float male;
float female;
};
struct city {
string name;
string mayor;
float citizens;
ratio procent;
};
void enter();
void out();
void sorting();
void choise();
void main() {
setlocale(LC_CTYPE, "rus");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
//cities.open("города.txt", ios::app);
/*cities << left << setw(30) << "Имя" << left << setw(30) << "Мэр" << left << setw(30) << "Жители, млн."
<< left << setw(30) << "Мужчин, %" << left << setw(30) << "Женщин, %" << endl;*/
do {
system("cls");
cout << "Обработка списка:" << endl << endl;
cout << "1. Создать список" << endl;
cout << "2. Вывести список" << endl;
cout << "3. Сортировка" << endl;
cout << "4. Выборка" << endl;
cout << "5. Удалить список" << endl;
cout << "6. Выход из программы" << endl;
cin >> n;
switch (n) {
case 1: enter(); break;
case 2: out(); break;
case 3: sorting(); break;
case 4: choise(); break;
case 5: cities.open("города.txt", ios::out); cities.close();
case 6: break;
}
if (n == 6) break;
} while (1);
}
void enter() {
cities.open("города.txt", ios::app);
city t;
system("cls");
cout << "Данных для скольких городов нужно ввести?" << endl;
cin >> i;
for (int k = 0; k < i; k++) {
cout << "Название города" << endl; cin.ignore(); getline(cin, t.name);
cout << "Имя мэра" << endl; getline(cin, t.mayor);
cout << "Количество жителей (млн.)" << endl; cin >> t.citizens;
cout << "Процент мужского населения (до 100.0%)" << endl; cin >> t.procent.male; t.procent.male = t.procent.male; t.procent.female = 100.0 - t.procent.male;
cities << left << setw(30) << t.name << left << setw(30) << t.mayor << left << setw(30) << t.citizens
<< left << setw(30) << t.procent.male << left << t.procent.female << endl;
}
cities.close();
}
void out() {
cities.open("города.txt", ios::in);
city t;
system("cls");
/*string buf;
string kuf = " ";
getline(cities, buf);
if (strcmp(buf, kuf))*/ {
cout << left << setw(30) << "Имя" << left << setw(30) << "Мэр" << left << setw(30) << "Жители, млн."
<< left << setw(30) << "Соотношение мужчин и женщин, %" << endl << endl;
while (!cities.eof()) {
cities >> t.name >> t.mayor >> t.citizens >> t.procent.male >> t.procent.female;
if (cities.peek() == EOF) break;
cout << left << setw(30) << t.name << left << setw(30) << t.mayor << left << setw(30) << t.citizens
<< t.procent.male << "|" << t.procent.female << endl;
}
}
cout << endl;
cities.close();
system("pause");
}
void sorting() {
city m[25], t;
int c = 0;
cities.open("города.txt", ios::in);
system("cls");
cout << left << setw(30) << "Имя" << left << setw(30) << "Мэр" << left << setw(30) << "Жители, млн."
<< left << setw(30) << "Соотношение мужчин и женщин, %" << endl << endl;
while (!cities.eof()) {
cities >> t.name >> t.mayor >> t.citizens >> t.procent.male >> t.procent.female;
if (cities.peek() != EOF) {
m[c] = t;
c++;
}
}
for (int i = 0; i < c - 1; i++) {
for (int j = 0; j < c - 1; j++) {
float t1 = m[j].citizens + 0.0, t2 = m[j + 1].citizens + 0.0;
if (t1 > t2) {
t = m[j]; m[j] = m[j + 1]; m[j + 1] = t;
}
}
}
for (int i = 0; i < c; i++) {
cout << left << setw(30) << m[i].name << left << setw(30) << m[i].mayor << left << setw(30) << m[i].citizens
<< m[i].procent.male << "|" << m[i].procent.female << endl;
}
cities.close();
system("pause");
}
void choise() {
system("cls");
city t;
cities.open("города.txt", ios::in);
cout << "Города с населением больше 100 млн." << endl << left << setw(30) << "Имя" << left << setw(30) << "Мэр" << left << setw(30) << "Жители, млн."
<< left << setw(30) << "Соотношение мужчин и женщин, %" << endl << endl;
while (!cities.eof()) {
cities >> t.name >> t.mayor >> t.citizens >> t.procent.male >> t.procent.female;
if (cities.peek() == EOF) break;
//cout << t.citizens << endl;
if (t.citizens > 100) {
cout << left << setw(30)
<< t.name << left << setw(30) << t.mayor << left << setw(30) << t.citizens
<< t.procent.male << "|" << t.procent.female << endl;
}
}
cities.close();
system("pause");
}