Вопрос задан 13.07.2023 в 20:35. Предмет Информатика. Спрашивает Оконов Юрий.

C++ 2. В массиве хранится информация о количестве жильцов каждой квартиры пятиэтажного дома (4

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Кособуцький Микола.

Ответ:

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

 }

}

}

Объяснение:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данных задач можно написать программу на языке 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 данными о количестве жильцов в каждой квартире пятиэтажного дома.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос