Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАиП.docx
Скачиваний:
16
Добавлен:
31.05.2015
Размер:
93.35 Кб
Скачать

30. Функции чтения/записи данных в/из файл(-а).

Процедура открытия файла по чтению :

reset (<ф.п.>);

reset – ключевое слово (пер. с англ.: устанавливать);

<ф.п.> – файловая переменная.

При выполнении этой процедуры файл подготавливается к чтению: внутренняя переменная, её называют указатель файла, устанавливается на начало файла, т.е. на его первую компоненту.

Процедура открытия файла по записи:

rewrite(<ф.п.>);

При выполнении процедуры rewrite файл подготавливается к записи информации в начало файла. Процедура очищает файл (т.е. если в файле уже была информации, то она будет потеряна) и устанавливает указатель файла на первую компоненту.

Для чтения и записи информации из файла или в файл используются известные процедуры: read, readln и write, writeln в которых в качестве первого параметра выступает файловая переменная. Например:

write(f,x1,x2,x3) – процедура записи в файл f компонентов x1,x2,x3. Процедура записывает выражения х1, х2, х3 по одному в файл f, начиная с того места, куда был установлен указатель файла в момент обращения к процедуре write. Аналогично работают остальные процедуры ввода и вывода.

uses crt;

var f1, f2, f3:text;

s1, s2:string;

s:string;

a:array[1..100] of string;

i, m, n, o:byte;

u:char;

begin

assign(f1,'f1.txt');

assign(f2,'f2.txt');

assign(f3,'f3.txt');

rewrite(f1);

rewrite(f2);

rewrite(f3);

readln(s1);

readln(s2);

n:=length(s1);

m:=length(s2);

o:=n+m;

for u:='z' downto 'a' do

begin

for i:=1 to n do

if copy(s1[i],1,1)=u then

writeln(f1, s1[i]);

for i:=1 to m do

if copy(s2[i],1,1)=u then

writeln(f2, s2[i]);

end;

for u:='9' downto '0' do

begin

for i:=1 to n do

if copy(s1[i],1,1)=u then

writeln(f1, s1[i]);

for i:=1 to m do

if copy(s2[i],1,1)=u then

writeln(f2, s2[i]);

end;

reset(f1);

reset(f2);

i:=1;

while not eof(f1) do

begin

readln(f1,s);

a[i]:=s;

i:=i+1;

end;

while not eof(f2) do

begin

readln(f2,s);

a[i]:=s;

i:=i+1;

end;

for u:='a' to 'z' do

for i:=1 to o do

if copy(a[i],1,1)=u then

write(f3, a[i]);

for u:='0' to '9' do

for i:=1 to o do

if copy(a[i],1,1)=u then write(f3, a[i]); close(f1); close(f2); close(f3); end.

const M=255;

type A=record

F:string;

mark:array[1..3] of byte;

end;

var f:text;

spisok:A;

ball:real;

i, n:byte;

t:char;

d:array [1..M] of string;

marks:array[1..M] of real;

begin

assign(f,'f.txt');

rewrite(f);

writeln('Введите количество студентов');

readln(n);

for i:=1 to n do

with spisok do

begin

writeln('Фамилия студента');

readln(F);

writeln('Оценки студента');

read(mark[1], mark[2], mark[3]);

ball:=(mark[1]+mark[2]+mark[3])/3;

if ball>=4.0 then d[i]:=F;

if ball>=4.0 then marks[i]:=ball;

end;

for t:='а' to 'я' do

for i:=1 to n do

if copy(d[i],1,1)=t then

writeln(f, d[i], marks[i]:15);

close(f);

end.