Дан текстовый файл text.txt, состоящий из латинских букв. Составить программу, которая сначала напечатает буквы: a,o,y,u,e – в порядке их следования в тексте, а затем остальные буквы текста в том же порядке.
Решение задачи основано на идеи использования очереди для временного хранения всех букв из текста, отличных от a,o,y,u,e. Буквы a,o,y,u,e печатаются сразу по мере их чтения из файла. После окончания чтения файла печатаются буквы из очереди.
program ochered;
uses crt;
type tinf=char;
ss=^zveno;
zveno=record
inf:tinf;
sled:ss;
end;
var l,r:ss; ff:text; x:tinf;
function pusto:boolean;
begin
pusto:=l=nil;
end;
procedure voch (a:tinf);
var p:ss;
begin
new(p); p^.inf:=a; p^.sled:=nil;
if l<>nil then begin r^.sled:=p; r:=p;end
else
begin
l:=p;
r:=p;
end;
end;
procedure izoch(var a:tinf);
var p:ss;
begin
if l=nil then writeln('ochered pusta') else
begin p:=l; a:=p^.inf; l:=l^.sled;
dispose(p);
end;
end;
BEGIN
clrscr; l:=nil;r:=nil;
assign (ff, 'text.txt');
reset (ff);
while not eof(ff) do
begin
read(ff,x);
if x in ['a','o','y','u','e'] then write (x:3)
else voch(x);
end;
close (ff); writeln;
while l<>nil do
begin
izoch(x);
write(x:3);
end; {вывод элементов очереди на экран}
readkey;
END.