You are on page 1of 10

Міністерство освіти і науки України

Національний університет «Львівська політехніка»


Кафедра систем
автоматичного проектування

Звіт
Про виконання лабораторної роботи №4
Масиви і файли в мові програмування C
Варіант 13

Виконала студент групи КН-11З


Вакарова В.В.

Прийняв ассистент, к.т.н


Оборська О.В.

Львів 2021
Мета роботи: Навчитися використовувати масиви та файли при
розв’язанні задач.

Лабораторне завдання:
1. Навчитися використовувати масиви та файли при розв’язанні задач.
2. Одержати індивідуальне завдання.
3. Побудувати блок-схеми алгоритмів відповідно до завдання.
4. Скласти програми на алгоритмічній мові C згідно завдання.
5. Відлагодити програми, виконати обчислення, проаналізувати
отримані результати.

Завдання 1:
Дано натуральне число N (задати довільно, як константу
препроцесора) і одновимірний масив A0 , A 1 , … ., A N−1 цілих чисел
(згенерувати додатні та від’ємні елементи випадковим чином, за
допомогою функції бібліотеки <stdlib.h> rand()). Виконати наступні
дії:
13. Виконати сортування елементів по зростанню
Блок-схема:
Код:
#include <stdio.h>
#define N 13
#include <stdlib.h>
#include <conio.h>
int main(void)
{
int A[N];
int x = 0;
for (int i = 0; i < N; ++i)
{
A[i] = rand() % 19 - 10;
printf("%2d", A[i]);
}
printf("\n");
int length = sizeof(A) / sizeof(A[0]);
for (int i = 0; i < length; i++)
{
for (int j = i + 1; j < length; j++)
{
if (A[i] > A[j])
{
x = A[i];
A[i] = A[j];
A[j] = x;
}
}
}
printf("Sorted elements:");
for (int i = 0; i < length; i++)
{
printf("%d ", A[i]);
}
return 0;
}

Результат:

Завдання 2:
У файл F1.txt попередньо записати матрицю цілих чисел А(N,N)
(згенерувати випадковим чином, N задати довільно, як константу
препроцесора). Прочитати матрицю з файлу, виконати описані нижче
дії, їх результати записати в файл F2.txt.
13. Обчислити середнє арифметичне додатніх елементів кожного
стовпця.
Блок-схема:
Код:
#include <stdio.h>
#include <conio.h>
#define N 3
int main(void)
{

FILE* f1 = fopen("F1.txt", "r");


int A[N][N];
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
fscanf(f1, "%d", &A[i][j]);
printf("%2d", A[i][j]);

}
putchar('\n');
}
int sum, av;
for (int i = 0; i < N; ++i)
{
sum = 0;
for (int j = 0; j < N; ++j)
{
sum += A[j][i]; av = sum / N;
}

printf("arithmetic mean of elements of Column %d = %d\n", i + 1, av);


}
fclose(f1);
FILE* f2 = fopen("F2.txt", "w"); fprintf(f2, "result:\n");
for (int i = 0; i < N; ++i)
{
sum = 0;
for (int j = 0; j < N; ++j)
{
sum += A[j][i]; av = sum / N;
}

fprintf(f2, "arithmetic mean of elements of Column %d = %d\n", i + 1, av);


}
fprintf(f2, "\n");

return 0;
}
Результат:
Файл F1:

Результат:

Файл F2:

Контрольні запитання:
1. Що таке масив?
Масив – це послідовно розміщені у пам’яті елементи однакового
типу.
Кожен масив має ім’я.
2. Як обчислити розмір масиву?
Загальний розмір масиву в байтах рівний розміру базового типу
помноженого на кількість елементів. Для прикладу:
sizeof(int)*10.
3. В якій послідовності розміщуються в пам’яті елементи
двовимірного масиву?
У пам’яті всі елементи багатовимірного масиву зберігаються
підряд один за одним.
4. Що таке файл?
Файл – це набір даних в енергонезалежній пам'яті, до якого
можна звертатися за іменем.
5. Що таке шлях до файлу?
Для визначення місцезнаходження файлу потрібно додавати до
його імені список каталогів, де він перебуває. Такий список
називають шляхом (path).
6. Що таке текстовий і бінарний режим роботи з файлами?
Текстові файли можуть бути переглянуті й відредаговані із
клавіатури будь-яким текстовим редактором і мають дуже просту
структуру: послідовність ASCII-символів.
Бінарні файли – це файли, які не мають структури текстових
файлів.
Кожна програма для своїх бінарних файлів визначає власну
структуру. З будь-яким файлом можна працювати як у
бінарному, так і в текстовому режимах. Якщо текстовий файл
читати у бінарному режимі всі службові символи втрачають свій
сенс, наприклад символи переходу на новий рядок та перевід на
початок каретки будуть розглядатися просто як два байти зі
значеннями 0xD, 0хА.
7. Які Ви знаєте рівні роботи з файлами?
Низькорівневий ввід-вивід передбачає використання 106
основних служб вводу-виводу, що надаються операційною
системою.
Стандартний високорівневий ввід-вивід передбачає
застосування стандартного пакету бібліотечних функцій С та
визначень бібліотеки.
8. Що таке потоковий ввід-вивід?
При введенні-виведенні потоку всі дані розглядаються як потік
окремих байтів. Для користувача потік — це файл на диску або
фізичний пристрій, наприклад, дисплей чи клавіатура, або
пристрій для друку, з якого чи на який направляється потік
даних. Операції введення виведення для потоку дозволяють
обробляти дані різних розмірів і форматів від одиночного
символу до великих структур даних.
Програміст може використовувати функції бібліотеки,
розробляти власні і включати їх у бібліотеку. Для доступу до
бібліотеки цих класів треба включити в програму відповідні
заголовні файли.
9. Які існують стандартні потоки?
Програми на мові С автоматично відкривають три потоки, які
називаються стандартним вводом, стандартним виводом і
стандартним виводом помилок. У бібліотеці для них
зарезервовані файлові вказівники “stdin”, “stdout” і “stderr”,
відповідно.
10. Які параметри функції fopen()?
Функція відкриття файлу fopen() має два параметри, обидва є
стрічковими літералами.
Перший – задає шлях та ім'я файлу, що відкривається, а другий –
тип доступу до файлу, що може приймати деякі значення.
11. Що таке дескриптор?
Керування відкритими файлами здійснюється операційною
системою за допомогою таблиці дескрипторів (handle).
Файловий дескриптор це абстрактний вказівник для доступу до
відкритого файлу або іншого пристрою вводу-виводу. Файловий
дескриптор є невід'ємним цілим числом, як правило типу int.
Дескриптор міститься у структурі типу FILE.
12. Які функції використовуються для роботи з файлами в
текстовому режимі?
Для роботи з текстовими файлами в бібліотеці мови С є низка
зручних функцій, розглянемо найпоширеніші: fprintf(), fscanf().
Формат параметрів-цих функцій дуже схожий на формат
знайомих функцій printf(), scanf().
13. Які функції використовуються для роботи з файлами в
бінарному режимі?
Доцільно використовувати функції для роботи з бінарними
файлами: fwrite() і fread(). Ці функції без яких-небудь змін
копіюють блок даних з оперативної пам'яті у файл і, відповідно, з
файлу – в пам’ять. Такий спосіб обміну даними вимагає менше
часу.
Висновок: На цій лабораторній роботі я навчилася використовувати
масиви та файли при розв’язанні задач.

You might also like