Кодинг
★ Рубрика: Кодинг
★ Тема: Pascal

Редактирование записей в файле

Задача. Коррекция телефонного справочника ("Tsprav"), например изменение фамилии абонента. Обычно при коррекции сначала просматривают содержимое записи, а потом, если необходимо, изменяют его. Поскольку после выполнения пары операторов:
Seek(Файл, Номер); Read(Файл, Запись);
или
Seek (Файл, Номер); Write(Файл, Запись); 
номер записи автоматически увеличивается на 1, перед каждой операцией записи (чтения) необходимо задать номер (выполнить Seek).

При работе программы должен вводиться номер телефона, и если он есть в справочнике, то на экран должны выдаваться фамилия и адрес его владельца. После этого задается вопрос о необходимости коррекции фамилии и в случае утвердительного ответа вводится новая фамилия. Если набран номер, которого в справочнике нет, то необходимо вывести сообщение об этом.
Program Updtel;
Type
Tel=Record
Nom: Integer; Fam,Adr: String[15];
End;
Var
Ftel: File Of Tel; Rtel: Tel; K,Num: Integer; S : Char;
Begin
Assign(Ftel,’Tsprav’);
Reset(Ftel); { Открытие файла }
Repeat {Поиск фамилии и адреса абонента по номеру телефона}
Write(’Введите номер телефона: ’); ReadLn(k);
Seek(Ftel,k);
If Not Eof(Ftel) then
Begin
Read(Ftel,Rtel);
With Rtel do Write (’Фамилия: ’,fam,’ Адрес: ’,Adr);
Writeln(’Будем менять фамилию?-Д/Н Y/N’);
Readln(S);
If (S=’Д’) (S=’д’) Or (S=’Y’) Or (S=’y’) then
Begin
Writeln(’Введите фамилию’); Read (Rtel.fam);
Seek (Ftel,k);
Write(Ftel,Rtel);
end;
End
else
Writeln (’Неправильный номер’); Writeln (’Продолжаем?-Д/Н Y/N’);
Readln(S);
Until (S=’H’) Or (S=’н’) Or (S=’n’) Or (S=’N’);
Writeln (’Конец работы, нажмите клавишу Enter’);
Readln;
end.
 Похожие публикации: Pascal

Войти и комментировать [ Вход | Регистрация ]