
C++ 2. В массиве хранится информация о количестве жильцов каждой квартиры пятиэтажного дома (4
подъезда, на каждом этаже по 2 квартиры). а) по выбранному номеру квартиры определить количество жильцов, а также их соседей проживающих на одном этаже; б) определить суммарное количество жильцов для каждого подъезда; в) определить номера квартир, где живут многодетные семьи. Условно будем считать таковыми, у которых количество членов семьи превышает пять человек.

Ответы на вопрос

Ответ:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//создадим вектор и заполним случайными числами
vector<vector<pair<int, int>>> v(5, vector<pair<int, int>>(4));
for (auto& it1 : v) {
for (auto& it2 : it1) {
it2 = make_pair(rand()%6 + 1, rand()%6 + 1);
}
}
//а) по квартире определим кол. жильцов и у соседей
cout << "Input apartment number: ";
int n;
cin >> n;
if (n % 2) {
cout << "Apartment:" << v[(n % 30) / 2-1][(n - 1) / 10].first << endl;
cout << "Neighbor:" << v[(n % 30) / 2-1][(n - 1) / 10].second << endl;
}
else {
cout << "Apartment:" << v[(n % 30) / 2-1][(n - 1) / 10].second << endl;
cout << "Neighbor:" << v[(n % 30) / 2-1][(n - 1) / 10].first << endl;
}
//суммарное количество жильцов в каждом подъезде
vector<int> v2(4,0);
for (int i = 0; i < 5;i++) {
for (int j = 0; j < 4;j++) {
v2[j] += v[i][j].first;
v2[j] += v[i][j].second;
}
}
for (auto it : v2) cout << it<<endl;
//Номера квартир многодетных семей
cout << endl;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
if (v[i][j].first > 5) cout << j * 10 + (i + 1) * 2 - 1<<endl;
if (v[i][j].second > 5) cout << j * 10 + (i + 1) * 2 <<endl;
}
}
}
Объяснение:



Для решения данных задач можно написать программу на языке C++, которая будет работать с массивом информации о жильцах в доме. Ниже приведен пример кода для выполнения каждой из задач:
cpp#include <iostream>
const int FLOORS = 5;
const int APARTMENTS_PER_FLOOR = 2;
const int ENTRANCES = 4;
const int TOTAL_APARTMENTS = FLOORS * APARTMENTS_PER_FLOOR * ENTRANCES;
// Функция для определения индекса квартиры в массиве по номеру этажа, номеру квартиры и номеру подъезда
int getApartmentIndex(int entrance, int floor, int apartment_number) {
return (entrance - 1) * (FLOORS * APARTMENTS_PER_FLOOR) + (floor - 1) * APARTMENTS_PER_FLOOR + (apartment_number - 1);
}
int main() {
int residents[TOTAL_APARTMENTS];
// Здесь необходимо заполнить массив residents данными о количестве жильцов в каждой квартире.
// а) по выбранному номеру квартиры определить количество жильцов, а также их соседей проживающих на одном этаже
int chosen_entrance, chosen_floor, chosen_apartment;
std::cout << "Введите номер подъезда, этажа и квартиры: ";
std::cin >> chosen_entrance >> chosen_floor >> chosen_apartment;
int chosen_apartment_index = getApartmentIndex(chosen_entrance, chosen_floor, chosen_apartment);
int chosen_residents = residents[chosen_apartment_index];
if (chosen_floor > 1) {
int upper_neighbor_index = getApartmentIndex(chosen_entrance, chosen_floor - 1, chosen_apartment);
int upper_neighbor_residents = residents[upper_neighbor_index];
std::cout << "Жильцов в выбранной квартире: " << chosen_residents << std::endl;
std::cout << "Жильцов в соседней квартире на верхнем этаже: " << upper_neighbor_residents << std::endl;
} else {
std::cout << "Жильцов в выбранной квартире: " << chosen_residents << std::endl;
std::cout << "На верхнем этаже нет квартир." << std::endl;
}
// б) определить суммарное количество жильцов для каждого подъезда
int total_residents_per_entrance[ENTRANCES] = {0};
for (int entrance = 1; entrance <= ENTRANCES; ++entrance) {
for (int floor = 1; floor <= FLOORS; ++floor) {
for (int apartment = 1; apartment <= APARTMENTS_PER_FLOOR; ++apartment) {
int index = getApartmentIndex(entrance, floor, apartment);
total_residents_per_entrance[entrance - 1] += residents[index];
}
}
}
for (int entrance = 1; entrance <= ENTRANCES; ++entrance) {
std::cout << "Подъезд " << entrance << ": " << total_residents_per_entrance[entrance - 1] << " жильцов" << std::endl;
}
// в) определить номера квартир, где живут многодетные семьи (более 5 человек)
std::cout << "Квартиры с многодетными семьями:" << std::endl;
for (int entrance = 1; entrance <= ENTRANCES; ++entrance) {
for (int floor = 1; floor <= FLOORS; ++floor) {
for (int apartment = 1; apartment <= APARTMENTS_PER_FLOOR; ++apartment) {
int index = getApartmentIndex(entrance, floor, apartment);
if (residents[index] > 5) {
std::cout << "Подъезд " << entrance << ", Этаж " << floor << ", Квартира " << apartment << std::endl;
}
}
}
}
return 0;
}
Обратите внимание, что в данном коде используется функция getApartmentIndex
, которая преобразует указанные номер подъезда, этажа и квартиры в индекс элемента в одномерном массиве residents
. Перед запуском программы необходимо заполнить массив residents
данными о количестве жильцов в каждой квартире пятиэтажного дома.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili