program lab_5_1;
type {описание типов}
zap = record {запись}
fam: string[20];
end;
var
f: file of zap; {файловая переменная}
i,n: integer; {целочисленные переменные}
z: zap; {переменная типа запись}
otvet: byte; {переменная выхода из циклов}
function poz(nt: integer): integer; {хэш-функция позиционирования}
function nt(poz: integer): integer; {хэш-функция для вывода}
begin
{Выбор действия и его обработка}
case n of
1: begin
{Инициализация файла}
{Цикл прохода по файлу}
for i:=0 to 1000 do
{запись пустых данных для возможности редактирования}
repeat
repeat
{Запрос ввода номера}
{Проверка номера на правильность}
if (n<3000) or (n>3999) then
Writeln('Неверный номер. Повторите ввод.');
until (n<=3999) and (n>=3000);
{Позиционирование}
Seek(f, poz(n));
{Ввод данных и запись в файл}
Readln(z.fam);
Write(f,z);
{Запрос выхода}
Readln(otvet);
until otvet=2;
{Инициализация файла}
{Цикл прохода по файлу}
while not Eof(f) do
{Считываение и печать данных, если они заполнены}
end;
2: begin
{Инициализация файла}
{Цикл прохода по файлу}
for i:=1 to 1000 do
{Заполнение файла фиктивными данными}
write('Файл создан.');
end;
end;
end.
program lab_5_2;
type {описание типов}
zap = record {запись}
fam: string[20];
end;
var {описание переменных}
f: file of zap; {файловая переменная}
n: integer; {целочисленная переменная}
fpath: string; {переменная пути файла}
z: zap; {переменная типа запись}
otvet: byte; {переменная выхода из циклов}
flag: boolean; {логическая переменная}
{описание процедур и функций}
function poz(nt: integer): integer; {хэш-функция позиционирования}
function nt(poz: integer): integer; {хэш-функция для вывода}
begin
{Выбор действия и его обработка}
case n of
1: begin
{Инициализация файла}
{Цикл прохода по файлу}
while not Eof(f) do
begin
{Считывание записи}
{Если запись не пуста - вывод на экран}
if (z.fam<>'') and (z.fam<>'*') then
Writeln(nt(filepos(f)-1),' ',z.fam);
end;
end;
2: begin
{Инициализация файла}
repeat
{Ввод номера и позиционирование}
seek(f,poz(n));
{Редактирование записи}
Readln(z.fam);
Write(f,z);
{Запрос выхода}
Readln(otvet)
until otvet=2;
end;
end;
end.
Введём в программу путь до исходного файла, который необходимо скопировать. Далее введём новый путь, по которому нужно сохранить копию файла. По завершении работы копия файла будет находиться по указанному пути.
Рисунок 1 – Заполнение файла данными и их вывод
Рисунок 2 – Создание файла с фиктивными данными
Рисунок 3 – Редактирование ранее созданного файла
Рисунок 3 – Просмотр ранее отредактированного файла
program lab_5_1;
type
zap = record
fam: string[20];
end;
var
f: file of zap;
i,n: integer;
z: zap;
otvet: byte;
function poz(nt: integer): integer;
begin
poz:=nt-3000;
end;
function nt(poz: integer): integer;
begin
nt:=poz+3000;
end;
begin
Writeln('Тел. база района насчитывает 1000 номеров, в диапазоне [3000-3999].');
Writeln('Вы можете заполнить базу в файл с прямым доступом.');
Writeln('Или можете создать файл с пустыми данными, и редактировать его отдельно.');
Write('Ваш выбор? (1-заполнить, 2-пустой файл): ');
Readln(n);
case n of
1: begin
Assign(f, 'baza1.dat');
Rewrite(f);
for i:=0 to 1000 do
begin
z.fam:='*';
write(f,z);
end;
{end for}
repeat
repeat
Write('Введите номер телефона: ');
Readln(n);
if (n<3000) or (n>3999) then
begin
Writeln('Неверный номер. Повторите ввод.');
Writeln;
end;
{end if}
until (n<=3999) and (n>=3000);
Seek(f, poz(n));
Write('Введите фамилию: ');
Readln(z.fam);
Write(f,z);
Write('Продолжить ввод? (1-да/2-нет): ');
Readln(otvet);
Writeln;
until otvet=2;
Reset(f);
while not Eof(f) do
begin
Read(f,z);
if (z.fam<>'') and (z.fam<>'*') then
Writeln(nt(filepos(f)-1),' ',z.fam);
end;
{end while}
close(f);
end;
2: begin
Assign(f, 'baza2.dat');
Rewrite(f);
for i:=1 to 1000 do
begin
z.fam:='*';
write(f,z);
end;
{end for}
write('Файл создан.');
end;
end;
end.
program lab_5_2;
type
zap = record
fam: string[20];
end;
var
f: file of zap;
n: integer;
fpath: string;
z: zap;
otvet: byte;
flag: boolean;
function poz(nt: integer): integer;
begin
poz:=nt-3000;
end;
function nt(poz: integer): integer;
begin
nt:=poz+3000;
end;
begin
Writeln('В этой программе вы можете отредактировать телефонную базу,');
Writeln('Независимо заполнена ли она, или является пустой.');
Writeln('Вы можете просмотреть файл перед редактированием.');
Write('Ваш выбор? (1-посмотреть, 2-редактировать): ');
Readln(n);
case n of
1: begin
Write('Введите имя файла: ');
Readln(fpath);
Assign(f, fpath);
Reset(f);
flag:=true;
while not Eof(f) do
begin
Read(f,z);
if (z.fam<>'') and (z.fam<>'*') then
begin
Writeln(nt(filepos(f)-1),' ',z.fam);
flag:=false;
end;
{end if}
end;
{end while}
if flag then Write('Файл пуст');
close(f);
end;
2: begin
Write('Введите имя файла: ');
Readln(fpath);
Assign(f, fpath);
Reset(f);
repeat
Write('Введите номер: ');
Readln(n);
seek(f,poz(n));
Write('Введите нового владельца, или введите звёздочку чтобы удалить его: ');
Readln(z.fam);
Write(f,z);
Write('Редактировать ещё? (1-да,2-нет): ');
Readln(otvet)
until otvet=2;
end;
end;
end.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.