Программа на C++/ Тема Структуры
Описать структуру квартира, содержащую информацию о жителях, населяющих квартиры дома: номер квартиры, фамилия хозяина, количество человек, прописанных в ней, наличие льгот на оплату коммунальных услуг. Создать массив таких структур и заполнить его. Организовать поиск всех квартир, жители которых являются льготниками. Если таковых нет, то выдать сообщение
Answers & Comments
Verified answer
#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;
}