Программа на c++ картотека в бюро обмена квартир организована как контейнер. сведения о каждой квартире содержат: 1. количество комнат; 2. этаж; 3. площадь; 4. адрес. составить программу, которая обеспечивает: 1. начальное формирование картотеки; 2. ввод заявки на обмен; 3. поиск в картотеке подходящего варианта: при равенстве количества комнат и этажа и различии площадей в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в список; 4. вывод всего списка. 5. программа должна обеспечивать. диалог с меню и контроль ошибок при вводе
```cpp
#include
#include
#include
#include
using namespace std;
struct Apartment {
int rooms;
int floor;
double area;
string address;
};
vector
void initializeCatalog() {
catalog.clear(); // Очищаем список перед начальным формированием
// Пример начального формирования картотеки
Apartment apt1 = {2, 5, 70.0, "ул. Ленина, 10"};
Apartment apt2 = {3, 2, 90.0, "ул. Пушкина, 5"};
Apartment apt3 = {1, 3, 50.0, "ул. Гагарина, 7"};
catalog.push_back(apt1);
catalog.push_back(apt2);
catalog.push_back(apt3);
cout << "Картотека инициализирована.\n";
}
void addApplication() {
Apartment newApt;
cout << "Введите количество комнат: ";
cin >> newApt.rooms;
cout << "Введите этаж: ";
cin >> newApt.floor;
cout << "Введите площадь: ";
cin >> newApt.area;
cin.ignore(numeric_limits
cout << "Введите адрес: ";
getline(cin, newApt.address);
catalog.push_back(newApt);
cout << "Заявка добавлена в список.\n";
}
void findMatchingApartment() {
int targetRooms, targetFloor;
double targetArea;
cout << "Введите количество комнат в искомой квартире: ";
cin >> targetRooms;
cout << "Введите этаж искомой квартиры: ";
cin >> targetFloor;
cout << "Введите площадь искомой квартиры: ";
cin >> targetArea;
cin.ignore(numeric_limits
bool foundMatch = false;
for (auto it = catalog.begin(); it != catalog.end();) {
Apartment apt = *it;
// Проверяем условие соответствия квартиры
if (apt.rooms == targetRooms && apt.floor == targetFloor &&
(apt.area >= (1 - 0.1) * targetArea) && (apt.area <= (1 + 0.1) * targetArea))
{
cout << "Подходящая квартира найдена:\n";
cout << "Количество комнат: " << apt.rooms << endl;
cout << "Этаж: " << apt.floor << endl;
cout << "Площадь: " << apt.area << endl;
cout << "Адрес: " << apt.address << endl;
foundMatch = true;
it = catalog.erase(it); // Удаляем найденную квартиру из списка
} else {
++it;
}
}
if (!foundMatch) {
cout << "Подходящая квартира не найдена.\n";
}
}
void printCatalog() {
if (catalog.empty()) {
cout << "Картотека пуста.\n";
return;
}
cout << "Список квартир:\n";
for (const Apartment& apt : catalog) {
cout << "Количество комнат: " << apt.rooms << endl;
cout << "Этаж: " << apt.floor << endl;
cout << "Площадь: " << apt.area << endl;
cout << "Адрес: " << apt.address << endl;
cout << "---------------\n";
}
}
int main() {
setlocale(LC_ALL, ""); // Для корректного отображения русских символов в консоли
int choice;
while (true) {
cout << "Меню:\n";
cout << "1. Начальное формирование картотеки\n";
cout << "2. Ввод заявки на обмен\n";
cout << "3. Поиск подходящей квартиры\n";
cout << "4. Вывод всего списка\n";
cout << "5. Выход\n";
cout << "Выберите опцию: ";
cin >> choice;
switch (choice) {
case 1:
initializeCatalog();
break;
case 2:
addApplication();
break;
case 3:
findMatchingApartment();
break;
case 4:
printCatalog();
break;
case 5:
cout << "Программа завершена.";
return 0;
default:
cout << "Некорректный ввод. Попробуйте ещё раз.\n";
}
cout << endl;
}
}
```
Эта программа реализует следующие функциональности:
1. Начальное формирование картотеки: пользователь может вручную ввести информацию о трех квартирах, и они будут добавлены в картотеку.
2. Ввод заявки на обмен: пользователь вводит информацию о новой квартире, которую хочет обменять, и она добавляется в картотеку.
3. Поиск подходящей квартиры: пользователь вводит информацию о желаемой квартире (количество комнат, этаж, площадь), программа ищет квартиру в картотеке, которая подходит по требованиям. Если такая квартира найдена, ее данные выводятся на экран, и она удаляется из списка. Если нет подходящей квартиры, выводится соответствующее сообщение.
4. Вывод всего списка: программа выводит на экран все квартиры из картотеки.
5. Программа предоставляет пользователю диалог с меню, где он может выбирать нужные опции. В случае некорректного ввода программа сообщает об ошибке и предлагает повторить попытку.
Таким образом, эта программа позволяет эффективно организовать картотеку в бюро обмена квартир, обеспечивает диалог с пользователем и контроль ошибок при вводе.