Программа на c++/ тема структуры
описать структуру квартира, содержащую информацию о жителях, населяющих квартиры дома: номер квартиры, фамилия хозяина, количество человек, прописанных в ней, наличие льгот на оплату коммунальных услуг. создать массив таких структур и заполнить его. организовать поиск всех квартир, жители которых являются льготниками. если таковых нет, то выдать сообщение
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <time.h>
#include <Windows.h>
using namespace std;
struct Flat {
int number_flat;
string family_resident;
int number_of_residents;
bool is_beneficiary;
Flat(int number_flat1,
string family_resident1,
int number_of_residents1,
bool is_beneficiary1) : number_flat(number_flat1),
family_resident(family_resident1),
number_of_residents(number_of_residents1),
is_beneficiary(is_beneficiary1) {}
Flat() {
number_flat = 0;
family_resident = "None";
number_of_residents = 0;
is_beneficiary = false;
}
};
Flat* auto_class_flat_cin(int n) {
string family_residents[10] = {
"Иванов", "Сусаренко", "Алексеев",
"Селезнёв", "Борисов", "Милославский",
"Овчинников", "Агафонов", "Правый", "Иващенко" };
int numbers_of_residents[10] = { 1, 2, 3, 1, 4, 2, 2, 3, 7, 5 };
bool is_beneficiary_arr[10] = { true, false, true, false, true, false, true, false, true, false };
Flat* flats1 = new Flat[n];
random_shuffle(family_residents, family_residents + n);
random_shuffle(numbers_of_residents, numbers_of_residents + n);
random_shuffle(is_beneficiary_arr, is_beneficiary_arr + n);
for (size_t i = 0; i < n; i++) {
flats1[i] = Flat(i + 1, family_residents[i], numbers_of_residents[i], is_beneficiary_arr[i]);
}
return flats1;
}
int main()
{
srand(time(NULL));
setlocale(LC_ALL, "Russian");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int number_flat_cin;
string family_resident_cin;
int number_of_residents_cin;
bool is_beneficiary_cin;
bool is_auto;
int n;
cout << "Введите количество квартир (если указали до 10, то можно использовать автоматическое заполнение): ";
cin >> n; cout << endl;
Flat* Flats = new Flat[n];
cout << "Использовать автоматический ввод? 0 - Нет, 1 - Да: ";
cin >> is_auto; cout << endl;
if (is_auto && n <= 10) {
cout << "Автоматический ввод..." << endl;
Flats = auto_class_flat_cin(n);
}
else {
cout << "Ручной ввод..." << endl;
for (size_t i = 0; i < n; i++) {
cout << "Введите номер квартиры: ";
cin >> number_flat_cin;
cout << "Для квартиры под номером " << number_flat_cin << " введите фамилию хозяина квартиры: ";
cin >> family_resident_cin; cout << endl;
cout << "Для квартиры под номером " << number_flat_cin << " введите количество жильцов: ";
cin >> number_of_residents_cin; cout << endl;
cout << "Для квартиры под номером " << number_flat_cin << " есть ли льготы? (0 - отсутствуют, 1 - есть): ";
cin >> is_beneficiary_cin; cout << endl;
Flat temp = Flat(number_flat_cin, family_resident_cin, number_of_residents_cin, is_beneficiary_cin);
Flats[i] = temp;
}
}
for (size_t i = 0; i < n; i++) {
if (Flats[i].is_beneficiary == true) {
cout << "Номер квартиры: " << Flats[i].number_flat << ", ";
cout << "Фамилия владельца: " << Flats[i].family_resident << ", ";
cout << "Количество жителей: " << Flats[i].number_of_residents << ". " << endl;
}
}
delete[] Flats;
}
```cpp
struct Apartment {
int apartmentNumber;
string ownerSurname;
int numberOfResidents;
bool hasBenefits;
};
```
Создание массива структур и заполнение его данными:
```cpp
const int numberOfApartments = 10;
Apartment apartments[numberOfApartments];
// Заполнение данных для каждой квартиры
for (int i = 0; i < numberOfApartments; i++) {
cout << "Введите номер квартиры: ";
cin >> apartments[i].apartmentNumber;
cout << "Введите фамилию хозяина: ";
cin >> apartments[i].ownerSurname;
cout << "Введите количество прописанных в квартире: ";
cin >> apartments[i].numberOfResidents;
cout << "Есть ли льготы на оплату коммунальных услуг (1 - да, 0 - нет): ";
cin >> apartments[i].hasBenefits;
}
```
Организация поиска квартир с льготами:
```cpp
bool hasBenefitApartments = false; // переменная для проверки наличия квартир с льготами
for (int i = 0; i < numberOfApartments; i++) {
if (apartments[i].hasBenefits) {
cout << "Номер квартиры: " << apartments[i].apartmentNumber << endl;
cout << "Фамилия хозяина: " << apartments[i].ownerSurname << endl;
cout << "Количество прописанных в квартире: " << apartments[i].numberOfResidents << endl;
cout << "Льготы на оплату коммунальных услуг: ДА" << endl;
cout << endl;
hasBenefitApartments = true;
}
}
// Если нет квартир с льготами, вывести сообщение
if (!hasBenefitApartments) {
cout << "Квартиры с льготами не найдены." << endl;
}
```
Пояснение:
1. Создаем структуру `Apartment`, которая содержит информацию о квартире.
2. Создаем массив `apartments` структур `Apartment` размером `numberOfApartments` для хранения данных о квартирах.
3. Заполняем массив данными, используя цикл `for` и функцию `cin` для получения ввода от школьника.
4. Используя цикл `for`, проходим по всем квартирам и проверяем значение `hasBenefits`. Если `hasBenefits` равно `true`, выводим информацию о квартире.
5. Если не была найдена ни одна квартира с льготами, выводим сообщение об отсутствии таких квартир.
Таким образом, данный код позволяет описать структуру "Квартира", заполнить массив структур данными и найти все квартиры, жители которых являются льготниками. Если такие квартиры отсутствуют, выводится соответствующее сообщение.