Как организована программа на C++, которая действует как контейнер для картотеки в бюро обмена квартир? Какие сведения

  • 6
Как организована программа на C++, которая действует как контейнер для картотеки в бюро обмена квартир? Какие сведения о каждой квартире содержатся в данной картотеке? Как можно составить программу, которая выполняет такие функции как начальное формирование картотеки, ввод заявки на обмен, поиск подходящего варианта в картотеке (с условиями равенства количества комнат и этажа и различия площадей в пределах 10%), вывод всего списка и обеспечивает диалог с меню и контроль ошибок?
Groza
66
Программа на C++, которая действует как контейнер для картотеки в бюро обмена квартир, может быть организована с использованием классов и структур данных.

Прежде всего, необходимо создать структуру данных, которая содержит информацию о каждой квартире в картотеке. Для этого можно использовать следующую структуру:

cpp
struct Apartment {
int roomCount;
int floor;
double area;
// Другие необходимые сведения о квартире
};


Здесь `roomCount` представляет количество комнат в квартире, `floor` - этаж, на котором расположена квартира, а `area` - площадь квартиры. Вы также можете добавить дополнительные поля, если необходимо.

Далее, можно создать класс, который будет представлять картотеку квартир. В этом классе будет содержаться массив или список объектов структуры `Apartment`, а также методы для выполнения требуемых функций. Ниже приведен пример класса `ApartmentCatalog`:

cpp
#include
#include

class ApartmentCatalog {
private:
std::vector catalog;

public:
// Метод для начального формирования картотеки
void initializeCatalog() {
// Код для инициализации картотеки, например, считывание данных из файла или пользовательского ввода
}

// Метод для добавления новой квартиры в картотеку
void addApartment(const Apartment& newApartment) {
catalog.push_back(newApartment);
}

// Метод для ввода заявки на обмен и поиска подходящего варианта в картотеке
void findMatchingApartment(const Apartment& requestedApartment) {
for (const auto& apartment : catalog) {
if (apartment.roomCount == requestedApartment.roomCount &&
apartment.floor == requestedApartment.floor &&
std::abs(apartment.area - requestedApartment.area) <= 0.1 * requestedApartment.area) {
// Вывод информации о подходящей квартире
}
}
}

// Метод для вывода всего списка квартир в картотеке
void printCatalog() {
for (const auto& apartment : catalog) {
// Вывод информации о квартире
}
}

// Метод для обеспечения диалога с меню и контроля ошибок
void menuDialog() {
int choice;
// Основной цикл диалога с меню
do {
// Вывод меню
std::cout << "Меню:\n";
std::cout << "1. Начальное формирование картотеки\n";
std::cout << "2. Ввод заявки на обмен и поиск подходящего варианта\n";
std::cout << "3. Вывод списка квартир в картотеке\n";
std::cout << "4. Выход\n";
std::cout << "Введите номер выбранного пункта: ";
std::cin >> choice;

switch (choice) {
case 1:
initializeCatalog();
break;
case 2: {
Apartment requestedApartment;
// Ввод заявки на обмен
findMatchingApartment(requestedApartment);
break;
}
case 3:
printCatalog();
break;
case 4:
std::cout << "Выход из программы.\n";
break;
default:
std::cout << "Неверный номер пункта меню. Попробуйте снова.\n";
break;
}
} while (choice != 4);
}
};


Вы можете использовать этот класс `ApartmentCatalog` для создания объекта, который будет обеспечивать желаемые функции. Например, в функции `main` вы можете создать объект класса `ApartmentCatalog` и вызвать метод `menuDialog` для начала диалога с пользователем:

cpp
int main() {
ApartmentCatalog catalog;
catalog.menuDialog();
return 0;
}


Помните, что приведенный код является примером и требует настройки и доработки в зависимости от ваших требований. Однако, он дает общую идею о том, как можно организовать программу на C++ для работы с картотекой квартир в бюро обмена.