Да... хороша себе "небольшая подсказка"!
Исправил кучу ошибок, причесал, отладил, протестировал. Работает.
Код:
Uses crt;
Type
matr = array[1..5] of integer;
tFile = file of integer;
//Вывожу на экран, что есть в файле
procedure show(var f:text);
var s:string;
begin
Assign(f, 'input.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
Close(f);
end;
//Перевожу символы в ascii-коды
//(здесь пользователь вводит слово, которое надо удалить)
procedure input(var a:matr; var delword:string; var L:integer);
var i:integer;
begin
writeln('Enter delword:');
readln(delword);
L:=Length(delword);
for i:=1 to length(delword) do a[i]:=ord(delword[i]);
end;
//Перевожу все символы в ascii-коды
//(здесь слова, которые были в файле)
procedure transfer(var f:text; var f3:tFile);
var s:string; i,k:integer;
begin
reset(f);
assign(f3, 'ascii');
rewrite(f3);
while not eof(f) do
begin
readln(f,s);
for i:=1 to length(s) do
begin
k:=ord(s[i]);
write(f3,k);
end;
k:=10;
write(f3,k);
end;
close(f);
close(f3);
end;
//Удачная попытка удалить
procedure process (var f3:tFile; var f2:text; a:matr; L:integer);
var
k,i,p,time,count:integer;
flag,flag1,flag2:boolean;
b:array[1..30] of integer;
begin
writeln('Enter time:');
readln(time);
count :=0;
reset(f3);
Assign(f2, 'output.txt');
rewrite(f2);
while not eof(f3) do
begin
p:=0;
repeat
inc(p);
read(f3, k);
b[p]:=k;
until (k=10) or eof(f3);
if k=10 then dec(p);
if p=L then
begin
i:=0;
flag2:=true;
repeat
inc(i);
flag1:=b[i]=a[i];
until (flag1=false) or (i=L);
if flag1 then
begin
inc(count);
if count mod time = 0 then flag2:=false;
end;
flag:=flag2;
end else flag:=true;
if flag then
begin
for i:=1 to p do write(f2,chr(b[i]));
writeln(f2);
for i:=1 to p do write(chr(b[i]));
writeln;
end;
end;
Readln;
close(f2);
close(f3);
end;
var
f,f2: text;
f3:tFile;
delword: string;
a:matr;
time,L:integer;
begin
clrscr;
show(f);
input(a, delword,L);
transfer(f, f3);
process(f3, f2, a, L);
end.
Замечу, например, что если велено работать с кодами, то в процедуре
Process строковой переменной
Delword делать нечего: пользовательское слово мы в процедуре
Input перевели в кодовый массив, вот с ним и надлежит работать. Ну и ещё много чего по мелочи.
И ещё парочка пожеланий (необязательных).
1. При использовании форматирования листинга очень желательно, чтобы горизонтальные отступы сопряженных
begin и
end были строго одинаковыми (как у меня). Это позволяет сразу увидеть вложенность операторов.
2. Использование одинаковых идентификаторов в качестве параметров подпрограмм и глобальных переменных хоть и не запрещено, но крайне нежелательно, поскольку снижает читабельность. Я уж исправлять не стал, но если будете ещё программировать, учтите этот момент.
P.S. И ещё. В своей программе Вы (и я вслед за Вами) исходите из того, что в исходном файле каждое слово расположено в своей отдельной строке. Это так в задании оговорено или Вы "упростили"? Потому что если это не так, то требуется довольно муторная процедура выделения отдельных слов.