Ошибка в элементарной программе, поменять местами буквы в строке
По заданию нужно в введённой строке, в словах переставить местами буквы по алфавиту. Ну и вывести итоговую строку самособой. Подскажите пожалуйста, какой рекурсии не хватает и где?
program Slovaeng;
const
Delim=[' ', ',', '.', '?', '!'];
var
s, stmp, str:string;
i:Integer;
Min:char;
begin
begin
writeln ('S:');
readln (s);
i:=1;
str:='';
while i<= length(s) do
begin
while (i<=Length(s)) and (s in delim) do
stmp:=stmp+s;
inc(i);
str:='';
while (i<=Length(s)) and (not(str in delim)) do
begin
str:=str+str;
inc(i);
end;
if str>(str[i+1]) then min:=str[i+1];
end;
str:=min;
str[i+1]:=str;
end;
writeln('получается', stmp);
end.
По заданию нужно в введённой строке, в словах переставить местами буквы по алфавиту. Ну и вывести итоговую строку самособой. Подскажите пожалуйста, какой рекурсии не хватает и где?
program Slovaeng;
const
Delim=[' ', ',', '.', '?', '!'];
var
s, stmp, str:string;
i:Integer;
Min:char;
begin
begin
writeln ('S:');
readln (s);
i:=1;
str:='';
while i<= length(s) do
begin
while (i<=Length(s)) and (s in delim) do
stmp:=stmp+s;
inc(i);
str:='';
while (i<=Length(s)) and (not(str in delim)) do
begin
str:=str+str;
inc(i);
end;
if str>(str[i+1]) then min:=str[i+1];
end;
str:=min;
str[i+1]:=str;
end;
writeln('получается', stmp);
end.