Работа со структурой и запись её в файл:
program struct01;
type
TBook = record
author: string[40];{ автор, строка }
title: string[80]; { название, строка}
count: integer { количество, целое }
end;
const
N = 100;
var
B: TBook; { одна структура }
Books: array[1..N] of TBook; { массив }
F: file of TBook;
i: integer;
begin
writeln('Размер типа TBook = ', sizeof(TBook)); { 24 }
Assign(F, 'books.dat');
Rewrite(F);
B.author := 'Пушкин А.С.';
B.title := 'Полтава';
B.count := 1;
write(F, B);
B.author := 'Тургенев И.С.';
B.title := 'Муму';
B.count := 2;
write(F, B);
Close(F);
Assign(F, 'books.dat');
Reset(F);
i := 0;
while not Eof(F) do
begin { до конца файла }
i := i + 1;
Read(F, Books[i])
end;
writeln(B.author, ', ', B.title, ', ', B.count);
writeln( 'i=', i);
if i > 0 then
writeln(Books[1].author, ', ', Books[1].title, ', ', Books[1].count);
Close(F);
end.
Сортировка массива структур:
program struct02;
type
TBook = record
author: string[40];{ автор, строка }
title: string[80]; { название, строка}
count: integer { количество, целое }
end;
const
N = 3;
var
B: TBook; { одна структура }
Books: array[1..N] of TBook; { массив }
i, j: integer;
begin
B.author := 'Пушкин А.С.';
B.title := 'Полтава';
B.count := 1;
Books[1] := B;
B.author := 'Тургенев И.С.';
B.title := 'Муму';
B.count := 2;
Books[2] := B;
B.author := 'Булгаков М.А.';
B.title := 'Мастер и Маргарита';
B.count := 5;
Books[3] := B;
for i:=1 to N do
writeln(Books[i].author, '; ',
Books[i].title, '; ',
Books[i].count);
writeln('--- Сортировка ---');
for i:=1 to N-1 do
for j:=N-1 downto i do
if Books[j].author > Books[j+1].author then
begin
B := Books[j];
Books[j] := Books[j+1];
Books[j+1] := B
end;
for i:=1 to N do
writeln(Books[i].author, '; ',
Books[i].title, '; ',
Books[i].count);
end.
Сортировка указателей массива структур:
program struct03;
type
TBook = record
author: string[40];{ автор, строка }
title: string[80]; { название, строка}
count: integer { количество, целое }
end;
PBook = ^TBook;
const
N = 4;
var
B: TBook; { одна структура }
Books: array[1..N] of TBook; { массив }
p1: PBook;
p: array[1..N] of PBook; { массив указателей типа PBook }
i, j: integer;
begin
B.author := 'Пушкин А.С.';
B.title := 'Полтава';
B.count := 1;
Books[1] := B;
B.author := 'Тургенев И.С.';
B.title := 'Муму';
B.count := 2;
Books[2] := B;
B.author := 'Булгаков М.А.';
B.title := 'Мастер и Маргарита';
B.count := 5;
Books[3] := B;
B.author := 'Пелевин В.';
B.title := 'Generation П';
B.count := 4;
Books[4] := B;
for i := 1 to N do
writeln(Books[i].author, ', ', Books[i].title, ', ', Books[i].count);
{ Часть 2 }
writeln('---=== Часть 2 ===---');
for i:=1 to N do
p[i]:= @Books[i];
for i:=1 to N do
writeln(p[i]^.author, '; ',
p[i]^.title, '; ',
p[i]^.count);
writeln('---=== Сортировка Указателей ===---');
for i:= 1 to N-1 do
for j:= N-1 downto i do
if p[j]^.author > p[j+1]^.author then begin
p1 := p[j];
p[j] := p[j+1];
p[j+1] := p1
end;
for i:=1 to N do
writeln(p[i]^.author, '; ',
p[i]^.title, '; ',
p[i]^.count);
writeln('---=== Реально оставшееся состояние массива ===---');
for i:=1 to N do
writeln(Books[i].author, '; ',
Books[i].title, '; ',
Books[i].count);
end.
