Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Алгоритмізація та програмування – 2: Процедурне програмування ЗВІТ до лабораторної роботи № 3 «Структури» Варіант 20 Дата «20» червня 2022 Київ – 2022 Мета роботи: Ознайомитись зі структурами та масивами структур. Дослідити особливості доступу до змінних структурного типу. Завдання: 1. Ознайомитись зі структурами та масивами структур. Дослідити особливості доступу до змінних структурного типу. 2. У якості індивідуального завдання необхідно написати код програми, що створює масив структур згідно з індивідуальним завданням та виконує запис даних в файл у вигляді структурних блоків (елементів масиву структур). Ім'я файлу – «імя_структури».txt. 3. Реалізувати читання із файлу «імя_структури».txt окремих елементів масиву структур за заданим індексом масиву. 4. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій. Завдання для варіанту 20: / Результат роботи: 1. Роздрукувати (вивести на екран) попередньо сформовані та підготовлені для запису в файл дані. 2. Роздрукувати (вивести на екран) результат виконання операції читання даних із файлу. 3. ЗВІТ до комп’ютерного практикуму для перевірки додати в Клас. 4. Програмний код (відкритий для редагування) розмістити на сайті Repl.it (посилання виключно через кнопку «+Invite»). Теоретична частина Структури - це вбудована структура даних, що поєднує дані різних типів під одним ім'ям і надає можливість роботи з ними як окремо, так і з цілим об'єктом. Запис типу структури: Ім’я структури являє собою довільний ідентифікатор, якого застосовуються самі правила, як і при найменуванні змінних. Після імені структури у фігурних дужках роміщуються компоненти структури, які представляють набір описів об'єктів, які складають структуру. struct ім’я_структури { опис_компонентів }; Усі елементи структури оголошуються як змінні. Але на відміну від змінних, при визначенні елементів структури їм виділяється пам'ять, та його не можна ініціалізувати. Ініціалізація структур аналогічна ініціалізації масивів: у фігурних дужках передаються значення елементів структури по порядку. Також після створення змінної структури можна звертатися до її елементів - набувати їх значення або, навпаки, надавати їм нові значення. Зі структурами можливі такі дії: Доступ до елементів структури звернення до значення поля структури; привласнення поля значення; Робота зі структурою як із цілісним об'єктом оператор присвоювання може скопіювати екземпляр структури цілком; екземпляр структури можна передати цілком у функцію як параметр; екземпляр структури можна повернути із функції; можна отримати адресу екземпляра структури операцією взяття адреси &; Розмір цього типу структури можна визначити операцією sizeof(ім'я типу). Результат роботи / Рисунок 1. Ввід даних про ресторани / Рисунок 2. Вивід на екран попередньо сформованих даних про ресторани / Рисунок 3. Запис даних в файл / Рисунок 4. Читання з файлу інформації про всі ресторан / Рисунок 5. Повідомлення в разі введення значення, що не задовільняє умові / Рисунок 6. Читання з файлу інформації про конкретний ресторан Висновок: У ході виконання лабораторної роботи відбулося ознайомлення зі структурами та масивами структур, досліджено особливості доступу до змінних структурного типу. Відповідно до варіанту написано код програми, що створює масив структур згідно з індивідуальним завданням та виконує запис даних в файл у вигляді структурних блоків. Посилання (додаток 1) https://replit.com/join/xwopmzphqf-nastyachubukova Код програми (додаток 2) //18.06.2022 LR-3 Chubukova Anastasia #include <stdio.h> #define length 32 #define BWHT "\e[1;37m" #define WHT "\e[0;37m" #define HBLU "\e[0;94m" #define HCYN "\e[0;96m" #define HMAG "\e[0;95m" struct restaurant { char name[length]; char waiter[length]; int table; int visitors; double time; double closingtime; }; int main(){ int amount; printf(BWHT "Уведіть кількість ресторанів: "); scanf("%d", &amount); struct restaurant rests[amount]; for (int i = 0; i < amount; i++) { printf(HBLU "\nРесторан №%d - ", i); scanf("%s", rests[i].name); printf("\n"); printf(WHT "Уведіть номер столику: "); scanf("%d", &rests[i].table); printf("Уведіть час бронювання столику: "); scanf("%lf", &rests[i].time); printf("Уведіть ім'я офіціанта: "); scanf("%s", rests[i].waiter); printf("Уведіть кількість місць: "); scanf("%d", &rests[i].visitors); printf("Уведіть час закриття: "); scanf("%lf", &rests[i].closingtime); } printf(HCYN "\nДані про ресторани\n"); for (int i = 0; i < amount; i++) { printf(WHT"\nРесторан №%d - %s\n\nСтіл №%.d\nЧас відвідування: %.2f\nІм'я офіціанта: %s\nКількість місць: %d\nЧас закриття: %.2f\n", i, rests[i].name, rests[i].table, rests[i].time, rests[i].waiter, rests[i].visitors, rests[i].closingtime); } FILE *Restaurant; Restaurant = fopen("Restaurants.txt", "w+t"); if (Restaurant == NULL) { printf(HMAG "Помилка. Файл не відкрито"); return 0; } fprintf(Restaurant, "Дані про ресторани\n"); for (int i = 0; i < amount; i++) { fprintf(Restaurant, "\nРесторан №%d - %s\n\nСтіл №%.d\nЧас відвідування: %.2f\nІм'я офіціанта: %s\nКількість місць: %d\nЧас закриття: %.2f\n", i, rests[i].name, rests[i].table, rests[i].time, rests[i].waiter, rests[i].visitors, rests[i].closingtime); } printf("\nДані збережено в файл Restaurants.txt\n"); fclose(Restaurant); Restaurant = fopen("Restaurants.txt", "r"); printf(HCYN "\nБудь ласка, вкажіть що зробити далі?\n"); printf("Вивести на екран конкретний ресторан(1)\nВивести на екран увесь список ресторанів(2)\n"); int answer; scanf("%d", &answer); if (answer != 1 && answer != 2) { do { printf(HMAG "\nВведене значення є неправильним. Будь ласка, введіть 1 або 2: "); scanf("%d", &answer); } while (answer != 1 && answer != 2); } printf(WHT); if (answer == 1 || answer == 2) { if (answer == 1) { int answer1; printf(HCYN"Уведіть номер ресторану: "); scanf("%d", &answer1); printf(WHT); int num = amount - 1; while(answer1 < num || answer1 > num){ do{ printf(HMAG "\nВведене значення є неправильним. Будь ласка, введіть номер ресторану: "); scanf("%d", &answer1); } while (answer1 < num || answer1 > num); } for(int i = 0; i < amount; i++) { if(answer1 == i) { printf(WHT); printf("\nРесторан №%d - %s\n\nСтіл №%.d\nЧас відвідування: %.2f\nІм'я офіціанта: %s\nКількість місць: %d\nЧас закриття: %.2f\n", answer, rests[i].name, rests[i].table, rests[i].time, rests[i].waiter, rests[i].visitors, rests[i].closingtime); } } } if(answer == 2) { char all = fgetc(Restaurant); while (all != 1) { printf("%c", all); all = fgetc(Restaurant); } } } fclose(Restaurant); }
Антиботан аватар за замовчуванням

22.05.2023 11:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!