Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Записи.doc
Скачиваний:
22
Добавлен:
01.12.2018
Размер:
241 Кб
Скачать
☆

Var size : integer):boolean;

var

f : file of TBook; {файлова змінна для роботи з типізованим файлом}

i : integer; {номер книги в каталозі}

begin

assign(f,fname); {зв’язування файлової змінної з фізичним файлом fname}

{$I-}

reset(f); {відкриття файлу для читання}

{$I+}

if IOResult = 0 then {перевірка: чи відкрито файл?}

begin

size := FileSize(f); {визначення кількості книг у файлі}

if (size > max) then {якщо кількість книг в файлі перевищує максимальну,}

size := max; {тоді з файлу прочитати лише можливу кількість книг}

for i:=1 to size do {цикл читання з файлу книг у масив}

read(f,catalog[i]);

LoadFromFile := True; {каталог з файлу завантажено}

close(f); {закриття файлу}

end

else LoadFromFile := False; {каталог з файлу не завантажено}

end;

{Функція SaveToFile призначена для збереження каталогу книг у файл.

Вхідні дані:

fname – назва файлу, в якому зберігається каталог книг;

сatalog – каталог книг;

size – кількість книг у каталозі;

Вихідні дані:

True – каталог книг збережено у файл fname

False – файл не відкрито і каталог книг не збережено у файл.}

function SaveToFile(fname : string;var catalog : TCatalog; size : integer):boolean;

var

f : file of TBook; {файлова змінна для роботи з типізованим файлом}

i : integer; {номер книги в каталозі}

begin

assign(f,fname); {зв’язування файлової змінної з фізичним файлом fname}

{$I-}

rewrite(f); {відкриття файлу для запису}

{$I+}

if IOResult = 0 then {перевірка: чи відкрито файл?}

begin

for i:=1 to size do {цикл запису книг каталогу у файл}

write(f,catalog[i]);

SaveToFile := True; {каталог книг збережено у файл}

close(f); {закриття файлу}

end

else

SaveToFile := False; {каталог книг не збережено у файл}

end;

{Процедура SortCatalog призначена для сортування каталогу по назві книг за алфавітом.

Вхідні дані:

сatalog – каталог книг;

size – кількість книг у каталозі;

Вихідні дані:

сatalog – каталог книг, де книги розміщуються за алфавітом;}

procedure SortCatalog(var catalog : TCatalog; size : integer);

var

i,j : integer; {номера книг в каталозі}

book: TBook; {змінна для перестановки двох книг в каталозі}

begin

{Сортування каталогу методом обміну}

for i:=2 to size do

begin

for j:=size downto i do

if (catalog[j-1].name > catalog[j].name) then

begin

book := catalog[j];

catalog[j] := catalog[j-1];

catalog[j-1] := book;

end;

end;

end;

{Процедура PrintCatalog призначена для виводу книг з каталогу на екран монітору.

Вхідні дані:

сatalog – каталог книг;

size – кількість книг у каталозі;

Вихідні дані:

каталог книг на екрані монітору в табличному вигляді;}

procedure PrintCatalog(var catalog : TCatalog; size : integer);

var

i : integer; {номер книги}

begin

writeln('Назва книги':25,'Автори':25,'Жанр':12,'Рiк':5,'Том':5);

for i:=1 to size do

with catalog[i] do

writeln(name:25,author:25,style:12,year:5,tom:5);

end;

{Функція AddBook призначена для додавання нової книги у каталог. Книга додається вкінець каталогу. Якщо каталог вже заповнено, то нова книга не буде додана до каталогу.

Вхідні дані:

сatalog – каталог книг;

max – максимальна можлива кількість книг в каталозі;

size – кількість книг у каталозі;

Вихідні дані:

True – нова книга додана до каталогу книг та розміщена під номером size,

кількість книг в каталозі збільшилась на 1;

False – нова книга не була додана до каталогу оскільки немає місця.}

function AddBook(var catalog : TCatalog;max : integer;var size : integer):boolean;

var

s : String; {рядок для вводу чисел}

er : Integer; {ознака наявності помилки при перетворенні рядка в число}

begin

if (size + 1) <=max then {чи є вільний елемент в каталозі?}

begin

size := size + 1; {додавання книги до каталогу}

writeln('Додавання книги');

with catalog[size] do

begin

write('Назва книги =>'); {завдання назви книги}

readln(name);

write('Автори книги =>'); {завдання авторів книги}

readln(author);

write('Жанр книги =>'); {завдання жанру книги}

readln(style);

repeat {завдання року видання}

write('Рiк видання =>');

readln(s);