Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
251.9 Кб
Скачать

Вопрос №19. Пример обработки текстов.

Пример: создать файл с данными о студентах.

program tableStudentsofMyGroup;uses crt;

type

Person=record

Family:string;

mark:array[1..6] of Byte;

end;

var T1:text;

Student:array[1..20] of Person;

i,j,n:Integer;

begin

clrscr;

assign(t1,paramstr(1));rewrite(t1);

writeln('База Данных Студентов группы');

repeat

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

readln(n);

if (n>20) or (n<1) then writeln('Недопустимое количество');

until (n>=1) and (n<=20);

{Ввод данных}

for i:=1 to n do

with Student[i] do begin

write('Введите фамилию студента: '); readln(family);

write('Введите его оценки за прошлую сессию: ');

for j:=1 to 6 do

read(mark[j]);

readln;

end;

for i:=1 to n do

with Student[i] do begin

write(t1,family:20);

for j:=1 to 6 do

write(t1,mark[j]:3);

writeln;

end;

readln

end.

Пример: прочитать файл с данными о студентах и вывести фамилии на экран

program tableStudentsofMyGroup;uses crt;

const n=30;

type

Person=record

Family:string;

mark:array[1..6] of Byte;

end;

var T1:text;

Student:array[1..20] of Person;

i,j,n:Integer;

begin

clrscr;

writeln('База Данных Студентов группы');

assign(t1,paramstr(1));reset(t1);

until (n>=1) and (n<=20);

{Ввод данных}

n:=0;

while not eof(t1) do

with Student[i] do begin

read(t1,family);

for j:=1 to 6 do

read(t1,mark[j]);

readln;

end;

n:=n+1;

for i:=1 to n do

with Student[i] do begin

write(family:20);

for j:=1 to 6 do

write(mark[j]:3);

writeln;

end;

readln

end.

Пример: функция наличия файла на диске.

Function FileExist(FileName:String):Boolean;

Var F:filr;SaveFileMode:Byte;

Begin

Savefilemode:=filemode;

fileMode:=0;

assign(F,FileName);

{$I-}reset(f);{$I+};

Fileexist:=ioresult=0;

Close(f);filemode:=savefilemode;

Вопрос №20. Порядок обработки текстовых файлов.

Пример: копирование текстового файла по символам и по строкам. Отличия и ограничения.

Если копировать по строкам, то нужно помнить, что в одной строке для TP может быть максимум 255 символов.

Копирование по символам.

program copytext1;

var T1,T2:text;

ch:char;

begin

assign(T1,paramstr(1));reset(T1);

assign(T2,paramstr(2));rewrite(T2);

while not Eof(T1) do begin

while not eoln(T1) do begin

read(T1,ch);write(T2,ch);

end;

readln(T1);writeln(T2);

end;

end.

Копирование по строкам.

program copytext1;

var T1,T2:text;

s:string;

begin

assign(T1,paramstr(1));reset(T1);

assign(T2,paramstr(2));rewrite(T2);

while not Eof(T1) do begin

readln(T1,s);writeln(T2,s);

end;

end.

Удалить лишние пробелы между слов текстового файла используя булевские переменные.

program delpr1;

var T1,T2:text;

ch:char;

bool:boolean;

s:string;

begin

assign(T1,paramstr(1));reset(T1);

assign(T2,paramstr(2));rewrite(T2);

while not Eof(T1) do begin

bool:=true;

while not eoln(t1) do begin

while bool do begin

read(t1,ch);

if ch:=' ' then write(t2,ch) else bool:=false;

end;

write(t2,ch);

while ch<>' ' do

read(t1,ch);write(t2,ch);

write(t2,ch);

while ch=' ' do read(t1,ch);

end;

readln(t1);

writeln(t2);

end;

end.

Удалить лишние пробелы используя переменную состояния.

program delpr2;

var T1,T2:text;

ch:char;

Sost:1..3;

begin

assign(T1,paramstr(1));reset(T1);

assign(T2,paramstr(2));rewrite(T2);

while not Eof(T1) do begin

sost:=1;

while not eoln(T1) do

case sost of

1:begin

read(t1,ch);

if ch<>' ' then sost:=2;

write(t2,ch);

end;

2:begin

read(t1,ch);

if ch=' ' then sost:=3;

write(t2,ch)

end;

3:begin

read(t1,ch);

if ch<>' ' then begin sost:=2;write(t2,ch);end;

end;

end;

readln(T1);writeln(T2);

end;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]