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

оля1890 оля1890    1   14.11.2019 22:05    38

Ответы
mutsienietse14 mutsienietse14  10.10.2020 13:19

#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;

}

ПОКАЗАТЬ ОТВЕТЫ
LudmilaB LudmilaB  11.01.2024 19:58
Создание структуры квартира:

```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. Если не была найдена ни одна квартира с льготами, выводим сообщение об отсутствии таких квартир.

Таким образом, данный код позволяет описать структуру "Квартира", заполнить массив структур данными и найти все квартиры, жители которых являются льготниками. Если такие квартиры отсутствуют, выводится соответствующее сообщение.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика