C++ 2. In an array, information about the number of residents in each apartment of a five-story building is stored

  • 48
C++ 2. In an array, information about the number of residents in each apartment of a five-story building is stored (4 entrances, 2 apartments per floor). a) Determine the number of residents and their neighbors living on the same floor based on the selected apartment number; b) Determine the total number of residents for each entrance; c) Determine the apartment numbers where large families live. For the purpose of this task, we will consider large families as those with more than five members.
Vechnyy_Put
26
Добро пожаловать в урок по программированию на C++! Давайте разберёмся с задачей по анализу информации о жителях пятиэтажного здания.

а) Чтобы определить количество жителей и количество соседей, проживающих на одном этаже с выбранным номером квартиры, нам необходимо использовать информацию о количестве жителей в каждой квартире в массиве.

Имея массив с информацией о жителях на всех этажах и во всех подъездах, мы можем определить номер выбранной квартиры с помощью формулы:
\[ apartment\_number = (entrance\_number - 1) \times total\_floors \times total\_apartments\_per\_entrance + (floor\_number - 1) \times total\_apartments\_per\_floor + apartment\_position \]

Теперь, зная номер выбранной квартиры, мы можем найти количество жителей для указанной квартиры и количество соседей на одном этаже. Рассмотрим пример кода на C++:

cpp
#include

int main() {
int residents[4][5][2]; // Массив информации о жителях в каждой квартире

// Заполнение массива значениями (в примере задачи приведены случайные значения)
// residents[подъезд][этаж][номер квартиры]
residents[0][0][0] = 3; // Подъезд 1, 1 этаж, 1 квартира
residents[0][0][1] = 2; // Подъезд 1, 1 этаж, 2 квартира
residents[0][1][0] = 4; // Подъезд 1, 2 этаж, 1 квартира
residents[0][1][1] = 6; // Подъезд 1, 2 этаж, 2 квартира
// и так далее...

int entrance_number = 1; // Выбранный номер подъезда
int floor_number = 2; // Выбранный номер этажа
int apartment_position = 1; // Положение квартиры на этаже

int apartment_number = (entrance_number - 1) * 5 * 2 + (floor_number - 1) * 2 + apartment_position;

int residents_count = residents[entrance_number - 1][floor_number - 1][apartment_position - 1];

int neighbors_count = 0;
// Подсчёт количества соседей
if (floor_number > 1) {
neighbors_count += residents[entrance_number - 1][floor_number - 2][apartment_position - 1];
}
if (floor_number < 5) {
neighbors_count += residents[entrance_number - 1][floor_number][apartment_position - 1];
}

std::cout << "Количество жителей в квартире номер " << apartment_number << ": " << residents_count << std::endl;
std::cout << "Количество соседей на этаже: " << neighbors_count << std::endl;

return 0;
}


б) Чтобы определить общее количество жителей для каждого подъезда, нам будет необходимо вычислить сумму жителей на каждом этаже в данном подъезде.

cpp
#include

int main() {
int residents[4][5][2]; // Массив информации о жителях в каждой квартире

// Заполнение массива значениями (в примере задачи приведены случайные значения)
// residents[подъезд][этаж][номер квартиры]
residents[0][0][0] = 3; // Подъезд 1, 1 этаж, 1 квартира
residents[0][0][1] = 2; // Подъезд 1, 1 этаж, 2 квартира
residents[0][1][0] = 4; // Подъезд 1, 2 этаж, 1 квартира
residents[0][1][1] = 6; // Подъезд 1, 2 этаж, 2 квартира
// и так далее...

for (int entrance_number = 1; entrance_number <= 4; entrance_number++) {
int total_residents = 0;

for (int floor_number = 1; floor_number <= 5; floor_number++) {
for (int apartment_position = 1; apartment_position <= 2; apartment_position++) {
total_residents += residents[entrance_number - 1][floor_number - 1][apartment_position - 1];
}
}

std::cout << "Общее количество жителей в подъезде " << entrance_number << ": " << total_residents << std::endl;
}

return 0;
}


в) Чтобы определить номера квартир, в которых проживают большие семьи, мы должны проверить, есть ли в указанной квартире более пяти жителей.

cpp
#include
#include

int main() {
int residents[4][5][2]; // Массив информации о жителях в каждой квартире

// Заполнение массива значениями (в примере задачи приведены случайные значения)
// residents[подъезд][этаж][номер квартиры]
residents[0][0][0] = 3; // Подъезд 1, 1 этаж, 1 квартира
residents[0][0][1] = 2; // Подъезд 1, 1 этаж, 2 квартира
residents[0][1][0] = 4; // Подъезд 1, 2 этаж, 1 квартира
residents[0][1][1] = 6; // Подъезд 1, 2 этаж, 2 квартира
// и так далее...

std::vector large_family_apartments;

for (int entrance_number = 1; entrance_number <= 4; entrance_number++) {
for (int floor_number = 1; floor_number <= 5; floor_number++) {
for (int apartment_position = 1; apartment_position <= 2; apartment_position++) {
int residents_count = residents[entrance_number - 1][floor_number - 1][apartment_position - 1];

if (residents_count > 5) {
int apartment_number = (entrance_number - 1) * 5 * 2 + (floor_number - 1) * 2 + apartment_position;
large_family_apartments.push_back(apartment_number);
}
}
}
}

std::cout << "Номера квартир, где проживают большие семьи: ";
for (int i = 0; i < large_family_apartments.size(); i++) {
std::cout << large_family_apartments[i];
if (i != large_family_apartments.size() - 1) {
std::cout << ", ";
}
}
std::cout << std::endl;

return 0;
}


Надеюсь, это объяснение было достаточно подробным и понятным! Если у вас есть ещё вопросы или что-то не ясно, не стесняйтесь спрашивать!