Паскаль, не могу разобраться в чем ошибка. В общем напишите программу
Создать, нетекстовый файл, который содержит информацию о телефонах сотрудников учреждения (фамилия, инициалы, номер телефона).
Требуется:
А) найти номер телефона сотрудника по его фамилии
Б) переписать в алфавитном порядке в текстовый файл информацию о сотрудниках, у которых первые цифры телефона 41.
{1 шаг - Создать типизированный файл!}
Program Ex;
uses crt;
Const Name=Baze;
type
StFio = string[30];
Adress=string[50];
RecBook = record
Fio : StFio;{Ф.И.О}
Adress: Adress;{Адрес}
num_tel:string[20]{Телефон};
end;
mas= array[1..30] of RecBook;
var
BookFile : file of RecBook;
Work : RecBook;
Vid : Char;
End_Menu : boolean;
A: mas;
procedure sort_buble(var a:mas; count:integer);
var c:mas;
last,current:integer;
begin
for last := count downto 2 do
for current := 1 to last-1 do
begin
if a[current].fio > a[current+1].fio then
begin
c[1]:=a[current];
a[current]:=a[current+1];
a[current+1]:=c[1];
end;
end;
end;
Procedure OutputRec_z;
begin
with Work do
begin
Gotoxy(2,2); Write( ФИО );
gotoxy(19,2); Write( Tel );
gotoxy(35,2); Write( Адрес );
gotoxy(2,4); Write(fio);
gotoxy(19,4); Write(num_tel);
gotoxy(35,4); writeln(adress);
end;
readkey;
clrscr;
end;
Procedure Find;
var
Findst:string;
End_Menu2:boolean;
begin
Write( Введите строку поиска(FIO) );
readln(Findst);
TextColor(15);
Clrscr;
Assign(BookFile,Name);
{$I-} Reset(BookFile); {$I+}
if IOresult = 0 then
begin
Seek(BookFile, 0);
while (not Eof(BookFile)) do
begin
Clrscr;
Read(BookFile,Work);
if Pos(FindSt,Work.fio)<>0 then
OutputRec_z;
end;
writeln(Больше записей удовлетворяющих критерию поиска не обнаружено);
readkey;
end
end;
var f:text;
Procedure Find_b;
var
i,j:integer;
begin
TextColor(15); Clrscr;
Assign(BookFile,Name);
{$I-} Reset(BookFile);
{$I+}
if IOresult = 0 then
begin
i:=0;{кол-во записей тел которых начинается с 41}
Seek(BookFile, 0);
while (not Eof(BookFile)) do
begin
Read(BookFile,Work);
if (Pos(41,Work.num_tel)=1) then
begin
i:=i+1;
a[i]:=work;
end;
end;
sort_buble(a, i);
assign(f,res.txt);
rewrite(f);
for j:=1 to i do
writeln(f,a[j].fio, , a[i].num_tel:7);
close(f);
end;
end;
{****************************************************************************}
Procedure AddRec;
begin
Clrscr;
Write( номер добавляемой записи );
TextColor(15);
Write(FilePos(BookFile)+1);
with Work do
begin
writeln;
Write( ФИО );
Readln(fio);
Write( Телефон );
Readln(num_tel);
Write( Адрес );
Readln(adress);
Write(BookFile,Work);
end;
end;
{****************************************************************************}
Procedure Create_Book_Phone;
var
Ind, Count : integer;
begin
Clrscr;
Textcolor(15);
Assign(BookFile,Name);
Rewrite(BookFile);
Write( Создаю новый файл );
Writeln(Name);
Write( Введите количество записей в файле );
Readln(Count);
for Ind := 1 to Count do AddRec;
Writeln;
Writeln( Создание завершено);
Writeln;
Writeln( Количество записей в файле );
Writeln(Filesize(BookFile));
Close(BookFile);
end;
{****************************************************************************}
Procedure OutputRec;
begin
Clrscr;
Read(BookFile,Work);
with Work do
begin
Gotoxy(10,2); Write(ФИО );
gotoxy(34,2); Write(Телефон );
gotoxy(50,2); Write(Адрес );
gotoxy(2,4); Write(fio);
gotoxy(35,4); Write(num_tel);
gotoxy(50,4); writeln(adress);
readkey;
clrscr;
end;
end;
{****************************************************************************}
Procedure OutputAllRec;
begin
Clrscr;
Assign(BookFile,Name);
{$I-} Reset(BookFile);{$I+}
if IOresult = 0 then
begin
Seek(BookFile, 0);
while (not Eof(BookFile)) do
OutputRec;
end
end;
{****************************************************************************}
BEGIN
ClrScr;
Textbackground(0);
Vid := ;
End_Menu := False;
repeat
Textcolor(15);
Write( Текущий Файл:,chr(13),Name);
Writeln;
Writeln;
Writeln(*********************************************************************);
Writeln;
Writeln(Меню:);
Writeln( 2 Cоздать новый файл);
Writeln( 3 Просмотреть все );
Writeln( 4 Найти номер телефона сотрудника по его фамилии);
Writeln( 5 Переписать в алф. порядке в текстовый файл информацию о сотрудниках первые цифры телефона 41);
Writeln( 8 Bыход);
Readln(Vid);
case Vid of
2 : Create_Book_Phone;
3 : OutputAllRec;
4 : Find;
5 : Find_b;
8 : End_Menu := true;
end;
ClrScr;
until End_Menu;
END.
