Ну вот, как-то так:
Код:
Program BD;
uses CRT;
Const
Max=15;
Type
baza = record
nomer_bibl: integer;
nazvanie: string[30];
adress: string[50];
telefon_bibl: LongInt;
end;
mas=array[1..max] of baza;
Var
p_Baza:mas;
N,k:byte;
f:file of baza;
Procedure Form_Base(var Nf:Byte);
var
i:byte;
begin
Assign(f,'Base');
Rewrite(f);
i:=0;
repeat
Inc(i);
if i<=Max then
begin
with p_Baza[i] do
begin
Writeln;
WriteLn('Заполняем ', i:2, ' запись');
Write('Введите номер библиотеки ("0" для выхода): ');
ReadLn(nomer_bibl);
if nomer_bibl>0 then
begin
Write('Введите название библиотеки: ');
ReadLn(nazvanie);
Write('Введите адрес библиотеки: ');
ReadLn(adress);
Write('Введите телефон библиотеки: ');
ReadLn(telefon_bibl);
end;
end;
Write(f,p_Baza[i]);
end;
until (p_Baza[i].nomer_bibl=0) or (i=Max);
if i=Max then Nf:=Max else Nf:=i-1;
Close(f);
end;
Procedure Add_libr(var Na:byte);
var
i:byte;
begin
Assign(f,'Base');
Reset(f);
for i:=1 to Na do read(f,p_Baza[i]);
Close(f);
if Na<Max then
begin
with p_Baza[Na+1] do
begin
WriteLn('Заполняем ', (Na+1):2, ' запись');
Write('Введите номер библиотеки: ');
ReadLn(nomer_bibl);
Write('Введите название библиотеки: ');
ReadLn(nazvanie);
Write('Введите адрес библиотеки: ');
ReadLn(adress);
Write('Введите телефон библиотеки: ');
ReadLn(telefon_bibl);
Inc(Na);
end;
end
else
begin
writeln('Список библиотек переполнен!');
Readln;
end;
Rewrite(f);
for i:=1 to Na do Write(f,p_Baza[i]);
Close(f);
end;
Procedure OutDisplay(Nd:byte);
var
i:byte;
begin
Assign(f,'Base');
Reset(f);
for i:=1 to Nd do read(f,p_Baza[i]);
Close(f);
for i:=1 to Nd do
with p_Baza[i] do
begin
WriteLn('Номер библиотеки: ', nomer_bibl);
WriteLn('Название библиотеки: ', nazvanie);
WriteLn('Адрес библиотеки: ', adress);
WriteLn('Номер телефона библиотеки: ', telefon_bibl);
WriteLn;
end;
Readln;
end;
Procedure Sort;
begin
end;
Begin
Repeat
Clrscr;
repeat
WriteLn('Меню:');
WriteLn('0. Составление списка библиотек');
WriteLn('1. Добавление записи');
WriteLn('2. Вывод записей на экран');
WriteLn('3. Сортировка');
WriteLn('4. Выход');
Write('Введите номер пункта меню: ');
ReadLn(k);
if k>4 then writeln('Вы ввели неправильный пункт меню. Повторите ввод');
until k<5;
Case k of
0: Form_Base(N);
1: Add_libr(N);
2: OutDisplay(N);
3: Sort;
end;
Until k=4;
End.
Несколько замечаний.
1. Если у Вас Pascal ABC, то тип LongInt замените на Integer.
2. Поймите! Компьютер НЕ ПОНИМАЕТ и НЕ ПРИНИМАЕТ программ, сляпанных по принципу "как бэ так" и "что-то типо": каждый символ в коде должен быть продуман и выверен. И если, например, тип "запись" имеет синтаксис
Код:
Record Tralala;
field1: ...
field2: ...
...
End;
то отбрасывать "End" НЕЛЬЗЯ! Ну и куча ещё подобных неряшливостей. Одна из самых ярких: если Вы употребляете оператор "with", то в теле этого оператора указывать имя записи НЕ СЛЕДУЕТ, только имена полей. Имя записи подключается автоматически.
3. К сожалению, Вы не указали, какая именно сортировка требуется, поэтому соответствующая процедура оставлена пустой.