Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Seek(F, FileSize(F));





5. Function FilePos(Var F):Longint; возвращает текущую позицию в файле, т.е. определяет номер текущей компоненты (указателя), считая от нуля.

6. Procedure Truncate(Var F); усекает размер файла до текущей позиции, все элементы после нее удаляются, и текущая позиция становится концом файла.

7. Procedure Rename(var F; NewName:string); переименовывает внешний файл любого типа. Процедура применяется к уже связанным файловым переменным F, но для которых еще не выполнена процедура открытия.

Например: Assign (NewFile, ’a:\MyFile\Data.dat’);

Rename (NewFile, ’a:\MyFilt\Mem.txt’);

8. Function EOF(var F):Boolean; возвращает для файла F признак конца файла, т.е. EOF = true, если указатель стоит за последним элементом файла или файл не содержит никаких элементов.

Функция EOF часто используется в циклах.

Например:

.... While not EOF(FileName) do

begin Read(FileName, X);

..............

end;..........

9. Procedure Erase(var F); удаляет внешний файл, связанный с переменной F. Используется только для закрытых файлов.

 

Типизированные константы не могут принимать значения файловых типов; также нельзя объявить типизированную константу-запись, если хотя бы одно из ее полей является полем файлового типа.

 

Пример. Составить программу, которая обеспечивает:

1. Создание внешнего файла C:\baza.dat, состоящего из записей типа Student, в которых содержится информация о студентах: фамилия и инициалы, дата рождения, адрес, номер группы, оценки по физике и математике, полученные на вступительных экзаменах.

2. Сортировку списка по алфавиту.

3. Выбор из списка всех студентов, родившихся раньше 1985 года и занесение их в новый файл типа Student (файл на диске назвать своей фамилией).

4. Вывод на печать всех данных о студентах из нового файла.

Program files;

uses printer;

Type

birthday = record {дата рождения}

day: 1..31;

month: 1..12;

year: 1975..1985;

end;

adress = record {домашний адрес студента}

gor: string [20]; {город}

ul: string [20]; {улица}

dom:integer; {№ дома}

kv:integer; {№ квартиры}

end;

ball = record {Вступительные оценки}

mat: real; {по математике}

phis: real; {по физике}

end;

student = record

FIO: string [20]; {фамилия и инициалы}

date:birthday; {дата рождения}

adr:adress; {адрес}

grup: string [6]; {группа}

exam:ball; {оценки}

end;

Var

baz,new: file of student; {baz-базовый файл; new-свой файл}

x,y:student; i,j,n,m:integer;

c:char; S: string [40];

Begin

writeln('Введите полное имя базового файла');

readln(S); {ввод полного имени файла}

assign(baz,S); {связывание файловой переменной baz с именем физического файла}

rewrite(baz); {открытие файла для записи}

writeln('Введите новые данные');

{ввод новых данных в оперативную память}

Repeat

writeln('Введите данные о студенте');

write('Фамилия, имя, отчество: ');readln(x.fio);

write('Число: ');readln(x.date.day);

write('Месяц: ');readln(x.date.month);

write('Год: ');readln(x.date.year);

write('Город: ');readln(x.adr.gor);

write('Улица: ');readln(x.adr.ul);

write('№ дома: ');readln(x.adr.dom);

write('№ квартиры: ');readln(x.adr.kv);

write('Группа: ');readln(x.grup);

write('Математика: ');readln(x.exam.mat);

write('Физика: ');readln(x.exam.phis);

write(baz,x); {запись переменной х в файл baz}

writeln('Продолжить ввод? Да(Д)/Нет(Н)');readln(c);

while not (c in ['д','Д','н','Н']) do

begin writeln('Введите Д или Н');

readln(c);

End

until (c='Н') or (c='н');

{сортировка по алфавиту содержимого файла методом "пузырька"}

L2: for i:=filesize(baz)-1 downto 1 do

for j:=0 to i-1 do

Begin

seek(baz,j); {установка указателя на элемент с номером j}

read(baz,x,y); {считывание из файла двух элементов}

if x.fio>y.fio then

Begin

seek(baz,j);

write(baz,y,x); {запись в файл считанных элементов

в обратном порядке}

end;

end;

seek(baz,0); {установка указателя в начало файла}

 

{связывание файловой переменной new c вновь создаваемым файлом}

assign(new,'c:\Files\Ivanov');

rewrite(new); {открытие нового файла для записи}

while not eof(baz) do

begin read(baz,x); {считывание переменной из базового файла}

if x.date.year<1986 then write(new,x);{выбор студентов

и запись данных о них в новый файл}

end;

close(baz); {закрытие базового файла}

seek(new,0); {установка указателя в начало файла new}

 

{считывание данных из своего файла и вывод их на экран}

i:=1;

while not eof(new) do

Begin

read(new,x);

writeln(i,'. ',x.fio:16,' ',x.date.day:2,'.',x.date.month:2,'.',

x.date.year, ' ',x.adr.gor:10,' ',x.adr.ul,

' ',x.adr.dom,'-',x.adr.kv);

writeln(' ',x.grup,' Математика: ',x.exam.mat:4:1,

' Физика: ',x.exam.phis:4:1);

writeln;

i:=i+1;

end;

close(new);

end.

!! Проанализируйте программу files, введите ее текст в компьютер, откомпилируйте ее, запустите на счет, введите запрашиваемые данные и просмотрите результаты.

 

Date: 2016-02-19; view: 352; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию