sign і Reset відкриваємо файл phone.dat і встановлюємо покажчик в першу позицію. За допомогою операторів Writeln і Readln створюємо інтерфейс для введення прізвища (за прізвищем ми будемо шукати у файлі потрібну нам запис) з клавіатури, присвоюємо введене значення змінної Nazv. У циклі за допомогою умовного оператора порівнюємо значення поля SurnameS зі значенням змінної Nazv і при збіг виводимо даний запис на екран, при кожному збігу значення змінної k буде збільшуватися на одиницю. Виводимо значення змінної k на екран. Закриваємо файл. p> procedure FindSurname;
var Nazv: string [15];
k: integer;
begin
k: = 0;
Assign (PhoneF, 'Phone phone.dat');
Reset (PhoneF);
ClrScr;
writeln ('Пошук запису по Прізвища: ');
writeln;
Write ('Введіть Прізвище:');
readln (Nazv);
while not Eof (PhoneF) do
begin
PhoneR.SurnameS: ='';
PhoneR.NameS: ='';
PhoneR.PhoneS: ='';
PhoneR.AddressS: ='';
read (PhoneF, PhoneR);
if PhoneR.SurnameS = Nazv then
begin
writeln;
write (PhoneR.SurnameS);
write ('', PhoneR.NameS);
write ('', PhoneR.PhoneS);
write ('', PhoneR.AddressS),
k: = k +1;
end;
end;
Close (PhoneF);
writeln;
writeln;
writeln ('Пошук завершено, знайдено записів: ', k);
writeln;
write ('Натисніть будь-яку клавішу ...');
ReadKey;
end;
Процедура FindPhone - пошук по номеру телефону. Робота даної процедури аналогічна роботі процедури FindSurname, за одним лише винятком: порівняння йде по полю PhoneS, а не по полю SurnameS.
procedure FindPhone;
var Nazv: string [15];
k: integer;
begin
k: = 0;
Assign (PhoneF, 'Phone phone.dat');
Reset (PhoneF);
ClrScr;
writeln ('Пошук запису по номеру телефону: ');
writeln;
Write ('Введіть номер телефону:');
readln (Nazv);
while not Eof (PhoneF) do
begin
PhoneR.SurnameS: ='';
PhoneR.NameS: ='';
PhoneR.PhoneS: ='';
PhoneR.AddressS: ='';
read (PhoneF, PhoneR);
if PhoneR.PhoneS = Nazv then
begin
writeln;
write (PhoneR.SurnameS);
write ('', PhoneR.NameS);
write ('', PhoneR.PhoneS);
write ('', PhoneR.AddressS);
k: = k +1;
end;
end;
Close (PhoneF);
writeln;
writeln;
writeln ('Пошук завершено, знайдено записів: ', k);
writeln;
write ('Натисніть будь-яку клавішу ...');
ReadKey;
end;
Процедура SortSurname - сортування за прізвищем. Дана процедура відкриває файл phone.dat, далі в циклі переписує всі записи в масив а. Потім за допомогою циклу і умовного оператора порівнює і сортує записи в алфавітному порядку по полю Прізвище. Далі за допомогою циклу виводить на екран вже відсортовані записи з масиву.
procedure SortSurname;
var i, j, c: integer;
tr: Phone;
begin
c: = 0;
Assign (PhoneF, 'Phone phone.dat');
Reset (PhoneF);
ClrScr;
writeln ('Сортування по Прізвища: ');
writeln;
while not Eof (PhoneF) do begin
inc (c, 1);
read (PhoneF, a [c]);
end;
for i: = 1 to c do
for j: = 1 to c-1 do begin
if a [j]. SurnameS> a [j +1]. SurnameS then begin
tr: = a [j +1];
a [j +1]: = a [j];
a [j]: = tr;
end;
end;
for i: = +1 to c do begin
writeln;
write (a [i]. SurnameS);
write ('', a [i]. NameS);
write ('', a [i]. PhoneS);
write ('', a [i]. AddressS);
end;
Close (PhoneF);
writeln;
writeln;
write ('Натисніть яку клавішу ... ');
ReadKey;
end;
Процедури SortAddress і SortPhone - працюють аналогічно процедурі SortSurname, тільки за одним винятком порівнюються і сортуються записи по полям адресу та номер телефону відповідно.
procedure SortAddress;
var i, j, c: integer;
tr: Phone;
begin
c: = 0;
Assign (PhoneF, 'Phone phone.dat');
Reset (PhoneF);
ClrScr;
writeln ('Сортування за адресою: ');
writeln;
while not Eof (PhoneF) do begin
inc (c, 1);
read (PhoneF, a [c]);
end;
for i: = 1 to c do
for j: = 1 to c-1 do begin
if a [j]. AddressS> a...