Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
4.7 kB
4
Indexable
#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");
}