
- •6.050103 «Програмна інженерія»
- •Одновимірні масиви
- •Теоретичні відомостi
- •Поняття масиву
- •Оголошення масиву
- •Доступ до елементів масиву
- •Обробка масивів
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Багатовимірні масиви
- •Теоретичні відомостi
- •Обробка матриць
- •Масиви-параметри
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття рядка
- •Операції з рядками
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття структури
- •Оголошення структури
- •Доступ до полів структур
- •Обробка структур
- •Приклад програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклад програми
- •Варіанти завдань
- •Бінарні файли
- •Теоретичні відомостi
- •Потоки і файли
- •Приклади програм
- •Варіанти завдань
- •Текстові файли
- •Теоретичні відомостi
- •Приклади програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклади програм
- •Варіанти завдань
- •8.1 Теоретичні відомостi
- •8.2 Приклади програм
- •8.3. Варіанти завдань
- •Порядок виконання роботи та зміст звіту
- •Список рекомендованої літератури
- •1.1. Одновимірні масиви ............................................................................... 3
Текстові файли
Мета роботи - вивчити особливості створення і обробки текстових файлів даних.
Теоретичні відомостi
Текстові файли - це файли, що складаються із компонентів–рядків змінної довжини (від 0 до 255 символів). Кінець кожного рядка позначається спеціальною ознакою кінця рядка Eoln, що представляє собою пару керуючих символів: "переведення каретки" (#13) і "переведення рядка" (#10).
Приклади програми
Приклад. Створити текстовий файл. Впорядкувати слова в кожному його рядку за алфавітом, переписавши їх в новий текстовий файл. Дописати в кінець нового файлу повідомлення про загальну кількість оброблених слів.
Алгоритм
Початок.
Ввести текстовий файл.
Відкрити файл для запису.
Повторювати дії, поки не натиснута клавіша 'n':
Ввести рядок.
Записати його у файл.
Запит на введення наступного рядка.
Закрити файл.
Вивести введений файл для перегляду.
Відкрити файл для читання.
Повторювати дії, поки не досягнутий кінець файла:
Зчитати поточний рядок.
Вивести його на друк.
Закрити файл.
Створити новий текстовий файл, який містить впорядковані рядки першого.
Відкрити перший файл для читання.
Відкрити другий файл для запису.
Повторювати дії, поки не буде досягнутий кінець першого файла:
Зчитати поточний рядок файла.
Вилучити його початкові пробіли.
Повторювати дії, поки перший елемент рядка – пробіл:
Видалити перший елемент рядка.
Вилучити з рядка проміжкові пробіли-дублікати.
Повторювати дії, поки в рядку є підрядок, що містить два пробіли підряд:
Видалити в знайденому підрядку перший із пробілів.
Якщо останній елемент рядка не пробіл, то приєднати пробіл в кінець рядка.
Сформувати масив слів, що містяться у поточному рядку.
Повторювати дії, поки в рядку є пробіли:
Слово до першого знайденого пробілу записати як черговий елемент масиву слів
Видалити збережене у масиві слово і відповідний пробіл із рядка
Відсортувати слова, збережені у масиві.
Послідовно порівнювати пари слів і якщо їх послідовність не відповідає шуканій, переставити слова місцями.
Записати масив відсортованих слів у компоненту другого файлу.
Записати у кінець файлу повідомлення про кількість слів.
Закрити перший файл.
Закрити другий файл.
Кінець.
Текст програми
program Lab_9_2;
uses Сrt;
var f1, f2: text; { заданий фaйл }
st, prom : string; { тимчасовий рядок }
n : byte; { кількість слів у рядку }
kol : word; { кількість слів у файлі }
word : array [1..20] of string; { масив слів}
i, j, k : integer; { робочі змінні }
s : char; { змінна для закінчення введення }
{--------- створення файла даних ---------------}
procedure Сreate_f1;
begin
Assign (f1, 'lab9_2.dat'); {відповідність файлової змінної файлу на диску}
Rewrite (f1); { відкриття файлу для запису }
repeat
Write ('input string of words: '); ReadLn (st); { введення рядка }
Write (f1, st); { запис рядка у файл }
WriteLn ('continue? [y/n]'); ReadLn (s);
until s = 'n'; { повторювати введення, поки не натиснута клавіша 'n' }
Close (f1); { закриття файлу }
end;
{------ виведення файлу на екран ------}
procedure Output_file (f : text);
begin
Reset (f); { відкриття файлу для читання }
while not Eof (f) do { перегляд усіх записів }
begin
ReadLn (f, st); { читання рядка }
WriteLn (st); { виведення рядка }
end;
Close (f);
end;
{--------- підготовка рядка до аналізу ---------------}
procedure Blank;
begin
while (s[1] = ' ') do
Delete (s, 1, 1); { вилучення початкових пробілів }
while Pos (' ', s) <> 0 do
Delete (s, Pos (' ', s), 1); { вилучення пробілів, що повторюються }
if s[Length (s)] <> ' ' then s := s + ' '; { додавання пробілу в кінець рядка }
end;
{--------- формування масиву слів ---------------}
procedure Forming_Words;
begin
n := 0;
while Pos (' ', st) <> 0 do
begin
n := n + 1;
word [n] := Copy (st, 1, Pos (' ', st) - 1); { формування масива слів }
Delete (st, 1, Pos (' ', st)); { вилучення слова з рядка }
end;
end;
{----- впорядкування масиву слів за алфавітом -----}
procedure Sort;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if word [i] > word [j] then
begin
prom := word [j];
word [j] := word [i];
word [i] := prom;
end;
end;
{----- створення нового файлу, що відповідає заданій умові -----}
procedure Create_f2;
begin
Assign (f2, 'new9_2.txt');
Rewrite (f2);
Reset (fl);
kol := 0;
while not Eof (f1) do
begin
ReadLn (f1, st); { зчитування рядка з першого файла }
Blank; { вилучення пробілів }
Forming_Words; { формування масиву слів }
Sort; { впорядкування масиву слів за алфавітом }
for i:=1 to n do
Write (f2, word [i], ' '); { запис слів у компоненту нового файлу }
WriteLn (f2);
kol := kol + n; { підрахунок загальної кількості слів }
end;
WriteLn (f2, 'number of words is ', kol); { запис повідомлення у файл }
Close (f1);
Close (f2);
end;
{------ основна програма -----------------}
begin
ClrScr;
WriteLn ('Result of laboratory work 9_2');
WriteLn ('variant 31');
WriteLn ('Еxecuted student of group ІС-хх Petrov');
Create_f1; { створення файлу даних }
WriteLn ('initial file:');
Output_file (f1); { виведення вихідного файлу даних }
ReadLn;
Create_f2; { створення нового файлу даних }
WriteLn('new file of text after sorting:');
Output_file (f2); { виведення нового файлу даних }
ReadLn;
end.
Відеокопія результату