Program ReverseWordsInStringProgram;
function ReverseWords(var s :string; start :integer) :string;
var
tmp :string;
begin
if start <= length(s) then
begin
tmp := '';
// get the word
while (start <= length(s)) and (s[start] <> ' ') do
begin
tmp := tmp + s[start];
Inc(start);
end;
// preserve the spaces
while s[start] = ' ' do
begin
tmp := ' ' + tmp;
Inc(start);
end;
// recursive call to get the next word and insert it before tmp
ReverseWords := ReverseWords(s, start) + tmp;
end else
ReverseWords := '';
end;
var
s :string;
begin
s := 'aa bbb cccc ddddd';
s := ReverseWords(s, 1);
writeln(s);
end.
(*
run:
ddddd cccc bbb aa
*)