Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Сравнение текстовых и типизированных файлов




Текстовые файлы Типизированные файлы
1. Подготовка файла для записи в конец файла
Append(F) //Открыть файл на дописывание Seek(F,FileSize(F)) //Установить файловый указатель на конец файла
2. Выдача последних k строк (компонентов)
var F:text; name,s:string; i,k,n: integer; begin write('Имя файла:'); readln(name); Assign(F, name); Reset(F); write(’Сколько строк выдать?'); readln(k); n:=0; //Подсчет числа n строк в файле while not Eof(F) do begin readln(F, s); n:=n+1 end; Reset(F); if (n>k) then //Если строк больше, чем запрошено for i:=1 to n-k do //то проброс n-k строк readln(F, s); //из начала файла while not Eof(F) do //Вывод строк на экран begin readln(F, s); writeln(s) end; Close(F) end. var F:file of integer; name:string; x,k,n: integer; begin write('Имя файла:'); readln(name); Assign(F, name); Reset(F); write('Сколько чисел выдать?'); readln(k); n:=FileSize(F); //Определение числа компонентов     if (n>k) then //Если чисел больше, чем запрошено Seek (F,n-k); //то установка файлового указателя //на k-е число от конца while not Eof(F) do //Вывод чисел на экран begin read(F,x); write(x, ’ ’) end; Close(F) end.
3. Замена строки (компонента) с заданным номером
Открываем новый временный файл Ft с именем, полученным добавлением символов ’tmp’ к имени исходного файла. Копируем строки из файла F в файл Ft, считая строки. Если номер строки равен k, вместо строки исходного файла пишем новую строку. Оба файла закрываем, исходный файл удаляем, а временный файл переименовываем в исходный. var F,Ft:text; name,s,snew:string; i,k: integer; begin write(’Имя файла:’); readln(name); Assign(F, name); Reset(F); write(’Какую строку заменить?’); readln(k); //Номер заменяемой строки write(’Новая строка:’); readln(snew); Assign(Ft, ’tmp’+name); Rewrite(Ft); i:=0; //Счетчик строк while not Eof(F) do begin readln(F,s); i:=i+1; if i=k tnen writeln(Ft,snew) else writeln(Ft,s) end; Close(F); Close(Ft); Erase(F); Rename(F,name) End.     var F:file of integer; name:string; k,xnew: integer; begin write(’Имя файла:’); readln(name); Assign(F, name); Reset(F); write(’Число с каким номером заменить?’); readln(k); //Номер числа write(’Новое число:’); readln(xnew); Seek(F,k); Write(F,xnew); Close(F) End.

Пример работы с типизированными файлами из записей

Создать файл из записей, где первое поле – фамилия, второе поле – год окончания мехмата. Исходные данные ввести с клавиатуры, признаком окончания ввода служит строка '---' при вводе фамилии.

Найти выпускника, ранее всех закончившего мехмат.

Переписать в новый файл такого же типа записи о выпускниках заданного года. Выдать оба файла на экран.

Program File_Rec;

type stud=record

FIO:string[15];

year:word

end;

Fstud= file of stud;

var F1,F2: Fstud; //Файлы из записей

name1, name2: string[10];

Y: word; //Заданный год окончания

const tabs= #9#9; //Табуляция для вывода на экран

procedure Creat_F(var F:Fstud);

var s: stud;

begin

repeat

write(’FIO или ---:’); readln(s.FIO);

if s.FIO = ’---’ then break;

write(’year:’);

readln(s.year);

write(F, s)

until false;

end;

procedure Print_F(var F:Fstud);

var s: stud;

begin

while not Eof(F) do

begin

read(F, s);

writeln(s.FIO, tabs, s.year)

end

end;

procedure Min_Year(var F:Fstud);

var s, min: stud; //Запись min для выпускника с минимальным годом выпуска

begin

min.FIO:=''; //Начальные значения

min.year:=Maxint; //перед циклом поиска

while not Eof(F) do

begin

read(F, s); //Чтение записи

if (s.year < min.year) //Если год из записи меньше минимального года,

then min:=s //то запоминание нового минимального

end;

writeln(min.FIO, tabs, min.year) //Вывод записи с минимальным годом

end;

procedure F_F(var F1,F2:Fstud; Y:word);

var s: stud;

begin

while not Eof(F1) do

begin

read(F1, s); //Чтение записи

if (s.year=Y) //Если год из записи файла совпадает с заданным годом

then write(F2, s) //то копирование записи в файл F2

end

end;

Begin

//______ Файл выпускников ______

write('Имя файла1:'); readln(name1);

Assign(F1, name1);

Rewrite(F1);

writeln(' Ввод данных для файла выпускников:');

Creat_F(F1);

Reset(F1);

writeln(' Файл выпускников:');

Print_F(F1);

writeln(' Выпускник, ранее других окончивший мехмат');

Reset(F1);

Min_Year(F1);

//______ Файл выпускников заданного года ______

write('Имя файла2:'); readln(name2);

Assign(F2, name2);

Rewrite(F2);

write('Год выпуска:'); readln(Y);

Reset(F1);

F_F(F1,F2,Y);

writeln(' Файл выпускников ', Y, ' года:');

Reset(F2);

Print_F(F2);

Close(F1);

Close(F2);

end.

Процедурные типы





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 624 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

2215 - | 2158 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.