Предмет: Информатика, автор: Legion055

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

Ответы

Автор ответа: Koljisto
0

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

}

Похожие вопросы
Предмет: Математика, автор: harybinaulia0