Національний технічний університет України
«Київський політехнічний інститут імені Ігоря Сікорського»
Кафедра АПЕПС
Алгоритмізація та програмування - 2. Процедурне програмування
ЗВІТ
до лабораторної роботи № 3
«Структури»
Варіант № 18
Дата «08» червня 2022
ЗАВДАННЯ:
1. Ознайомитись зі структурами та масивами структур. Дослідити особливості доступу до змінних структурного типу.
2. Розробити Блок-схему програмного алгоритму.
3. У якості індивідуального завдання необхідно написати код програми, що створює масив структур згідно з індивідуальним завданням та виконує запис даних в файл у вигляді структурних блоків (елементів масиву структур). Ім'я файлу – «імя_структури».txt.
4. Реалізувати читання із файлу «імя_структури».txt окремих елементів масиву структур за заданим індексом масиву.
5. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій.
РЕЗУЛЬТАТ РОБОТИ:
1. Роздрукувати (вивести на екран) попередньо сформовані та підготовлені для запису в файл дані.
2. Роздрукувати (вивести на екран) результат виконання операції читання даних із файлу.
3. ЗВІТ до комп’ютерного практикуму для перевірки додати в Клас.
4. Програмний код (відкритий для редагування) розмістити на сайті Repl.it (посилання виключно через кнопку «+Invite»).
Теоретичні відомості:
Успішна робота програми часто залежить від вдалого вибору способу представлення даних, із якими вона має взаємодіяти.
Структури використовуються в організацію складних даних, оскільки дозволяють пов'язані між собою змінні різних типів трактувати як одне ціле. Структурний шаблон є основною схемою, яка описує, як збирається структура. У Сі структура створюється за допомогою ключового слова struct, за яким слідує необов'язкове поле_тега (tag) і список елементів структури в парних фігурних {…}
дужках. Поле_тега дає назву структурі даного виду та є коротким позначенням частини декларації, укладеної у фігурні дужки. Воно також служить створення інших змінних даного структурного типу. Синтаксис структури виглядає так:
struct <поле_тега> {
тип_элемента элемент1;
тип_элемента элемент2;
тип_елемента елементN;
} var1, var2, var3;
Опис (декларація) структури – це тип, тому за правою фігурною дужкою можуть слідувати змінні та обов'язкова точка з комою! Якщо при описі поле тега відсутня, то створюється так званий анонімний структурний тип. Тег структури використовується для подальшого оголошення структур даного виду у формі:
struct тег список-ідентифікаторів;
Ініціалізувати структурну змінну можна лише коли вона є зовнішньою чи статичною. Зверніть увагу на те, що приналежність структурної
змінної до зовнішнього типу залежить від цього, де визначена змінна, а чи не де визначено її шаблон.
static struct book library ={"Мова Сі", "Уейт Прата Мартін", 2.10};
Доступ до елементів структури здійснюється так: першим вказується ім'я структури, потім, через точку, ім'я необхідного елемента. Наприклад: stname.mname. У цьому записі stname є змінною, що з певним структурним типом, а mname – ім'я змінної-члена структури.
Варіант індивідуального завдання:
/
Опис програми:
Програма створює структуру busStation, яка містить в собі поля для запису даних, таких як: номер автобуса, пункт призначення, дні проходження, час прибуття та час стоянки. Користувач вводить інформацію про два автобуси, яка потім записується в файл та виводиться на екран.
Результат програми:
/
Файл Автовокзал.txt:
/
Висновок: За результатом виконання лабораторної роботи розроблено програму, що створює структуру busStation у якій містяться поля для запису даних про номер автобуса, пункт призначення, дні проходження, час прибуття та час стоянки. Програма отримує дані від користувача,записує їх у файл Автовокзал.txt і виводить їх.
Посилання на replit: https://replit.com/join/whpsdipndw-okseniait
Код:
//Черкас Оксана 08.06.2022 Лабораторна робота №3 Алгоритмізація та програмування 18 варіант
#include <stdio.h>
#define SIZE 5
//Об'явлення структури
struct busStation{
int busNumber;
char destination[30];
char daysOfPassage[30];
char arrivalTime[10];
float parkingTime;
};
int main(int argc, char *argv[]) {
int i, j;
char ch;
struct busStation bus1, bus2;
//об'явлення потоків
FILE *file;
//створення файлу для запису
file = fopen("D:\\kpi\\Автовокзал.txt","w");
bus1.busNumber=1;
bus2.busNumber=2;
//Введення даних користувачем
printf("Автобус номер 1\n");
printf("Пункт призначення: ");
scanf("%s", bus1.destination);
printf("Дні проходження: ");
scanf("%s", bus1.daysOfPassage);
printf("Час прибуття: ");
scanf("%s", bus1.arrivalTime);
printf("Час стоянки: ");
scanf("%f", &bus1.parkingTime);
printf("\nАвтобус номер 2\n");
printf("Пункт призначення: ");
scanf("%s", bus2.destination);
printf("Дні проходження: ");
scanf("%s", bus2.daysOfPassage);
printf("Час прибуття: ");
scanf("%s", bus2.arrivalTime);
printf("Час стоянки: ");
scanf("%f", &bus2.parkingTime);
//Запис інформації про автобус 1 у файл
fprintf(file, "Автобус номер %d:\nПункт призначення: %s\nДні проходження: %s\nЧас прибуття: %s\nЧас стоянки: %.2f \n", bus1.busNumber, bus1.destination, bus1.daysOfPassage, bus1.arrivalTime, bus1.parkingTime);
//Виведення даних інформації про автобус 1
printf("\nАвтобус номер %d:\nПункт призначення: %s\nДні проходження: %s\nЧас прибуття: %s\nЧас стоянки: %.2f \n", bus1.busNumber, bus1.destination, bus1.daysOfPassage, bus1.arrivalTime, bus1.parkingTime);
//Запис інформації про автобус 2 у файл
fprintf(file, "\nАвтобус номер %d:\nПункт призначення: %s\nДні проходження: %s\nЧас прибуття: %s\nЧас стоянки: %.2f \n", bus2.busNumber, bus2.destination, bus2.daysOfPassage, bus2.arrivalTime, bus2.parkingTime);
//Виведення даних інформації про автобус 2
printf("\nАвтобус номер %d:\nПункт призначення: %s\nДні проходження: %s\nЧас прибуття: %s\nЧас стоянки: %.2f \n", bus2.busNumber, bus2.destination, bus2.daysOfPassage, bus2.arrivalTime, bus2.parkingTime);
//Закриття потоку
fclose(file);
return 0;
}