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.
Упорядочение записей в файле
Эта операция выполняется довольно часто. Ее можно произвести, используя известный метод " пузырька". Здесь возможны два подхода. 1. Записи из файла можно переписать в массив, упорядочить их там, а потом переписать этот массив в исходный файл. 2. Информация упорядочивается непосредственно в наборе данных. При значительном размере файла первый метод потребует большого объема памяти. Затраты оперативной памяти у второго подхода минимальны, но по быстродействию он проигрывает первому. Далее рассматривается пример, использующий второй подход (упорядочение непосредственно в файле). Любые улучшения алгоритма, позволяющие сократить время решения задачи, должны учитываться. Поэтому в программе операция выполняется до тех пор, пока записи в файле меняются местами (есть перестановки). Рассмотрим алгоритм на примере, в котором используется более общая по сравнению с телефонным справочником структура записей.
Задача. Набор данных, имя которого задается с клавиатуры, содержит информацию о компьютерах. Запись о компьютере имеет вид Марка, Цена. Упорядочить записи в наборе по возрастанию цены.
|