Частина тексту файла (без зображень, графіків і формул):
НАЦІОНАЛЬНИЙ АВІАЦІЙНИЙ УНІВЕРСИТЕТ
Кафедра комп’ютеризованих систем захисту інформації
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ №3
з дисципліни
«Технології програмування»
Київ 2023
Тема: Структури. Вкладені структури. Масиви структур.
Мета: Навчитись використовувати структури, вкладені структури та створювати масиви структур.
Варіант №12.
1. Визначити структуру з іменем APRT1, яка містить наступні поля:
Кількість кімнат;
Поверх;
Площа;
2. Визначити структуру з іменем APRT2, яка містить наступні поля:
Адреса;
Кількість людей, які проживають в квартирі;
3. Визначити структуру з іменем APARTMENTS, елементами якої є елементи структур APART1 та APART2.
4. Ввести з клавіатури дані в масив, який складається з N структур типу APARTMENTS.
5. Сортувати записи за адресами в алфавітному порядку.
6. Обрати найменшу площу серед квартир.
7. Визначити максимальну кількість кімнат на найвищому поверсі з запропонованих квартир.
8. Обрати найбільш густонаселену квартиру.
9. Вивести на екран інформацію про квартиру за введеною з клавіатури адреси. Якщо такої квартири немає, вивести відповідне повідомлення на екран.
Код програми:
#include <iostream>
#include <algorithm>
#include <string>
#include <windows.h>
using namespace std;
struct APRT1 {
int num_rooms;
int floor;
float area;
};
struct APRT2 {
string address;
int num_people;
};
struct APARTMENTS {
APRT1 apartment1;
APRT2 apartment2;
};
bool compareApartments(APARTMENTS a1, APARTMENTS a2) {
return a1.apartment2.address < a2.apartment2.address;
}
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
const int N = 4;
APARTMENTS apartments[N];
// Ввести дані в масив структур
for (int i = 0; i < N; i++) {
cout << "Квартира #" << i + 1 << endl;
cout << "Кількість кімнат: ";
cin >> apartments[i].apartment1.num_rooms;
cout << "Поверх: ";
cin >> apartments[i].apartment1.floor;
cout << "Площа: ";
cin >> apartments[i].apartment1.area;
cout << "Адреса: ";
cin.ignore();
getline(cin, apartments[i].apartment2.address);
cout << "Кількість людей, які проживають в квартирі: ";
cin >> apartments[i].apartment2.num_people;
cout << endl;
}
// Сортування за адресами в алфавітному порядку
sort(apartments, apartments + N, compareApartments);
// Пошук квартири з найменшою площею
float min_area = apartments[0].apartment1.area;
for (int i = 1; i < N; i++) {
if (apartments[i].apartment1.area < min_area) {
min_area = apartments[i].apartment1.area;
}
}
// Пошук максимальної кількості кімнат на найвищому поверсі
int max_rooms = 0;
for (int i = 0; i < N; i++) {
if (apartments[i].apartment1.floor == apartments[N - 1].apartment1.floor) {
if (apartments[i].apartment1.num_rooms > max_rooms) {
max_rooms = apartments[i].apartment1.num_rooms;
}
}
}
// Пошук найбільш густонаселеної квартири
int max_people = 0;
int index_max_people = 0;
for (int i = 0; i < N; i++) {
if (apartments[i].apartment2.num_people > max_people) {
max_people = apartments[i].apartment2.num_people;
index_max_people = i;
}
}
// Виведення на екран інформації про квартиру за введеною адресою
cout << "Введіть адресу квартири: ";
string search_address;
cin.ignore();
getline(cin, search_address);
bool found = false;
for (int i = 0; i < N; i++) {
if (apartments[i].apartment2.address == search_address) {
found = true;
cout << "Квартира знайдена:" << endl
<< "Кількість кімнат: " << apartments[i].apartment1.num_rooms << endl
<< "Поверх: " << apartments[i].apartment1.floor << endl
<< "Площа: " << apartments[i].apartment1.area << endl
<< "Адреса: " << apartments[i].apartment2.address << endl
<< "Кількість людей, які проживають в квартирі: " << apartments[i].apartment2.num_people << endl;
break;
}
}
if (!found) {
cout << "Квартира не знайдена." << endl;
}
// Виведення результатів
cout << endl << "Сортування в алфавітному порядку:" << endl;
for (int i = 0; i < N; i++) {
cout << apartments[i].apartment2.address << endl;
}
cout << endl << "Найменша площа серед квартир: " << min_area << endl;
cout << endl << "Максимальна кількість кімнат на найвищому поверсі: " << max_rooms << endl;
cout << endl << "Найбільш густонаселена квартира:" << endl
<< "Адреса: " << apartments[index_max_people].apartment2.address << endl
<< "Кількість людей, які проживають в квартирі: " << apartments[index_max_people].apartment2.num_people << endl;
return 0;
}
/
/
Блок-схема програми:
/
/
Висновок: Навчилась використовувати структури, вкладені структури та створювати масиви структур.