uses crt;
var
a:array [1..100] of string;
z,n:integer;
d:string;
function words(s:string; var b:array of string):integer;
var
i,j:integer;
begin
j:=1;
for i:=1 to length(s) do
if s[i]<>' ' then
b[j]:=b[j]+s[i]
else
if s[i+1]<>' ' then
j:=j+1;
words:=j+1;
end;
function invert(s:string):string;
var
i:integer;
st:string;
begin
st:='';
for i:=length(s) downto 1 do
st:=st+s[i];
invert:=st;
end;
begin
clrscr;
readln(d);
n:=words(d,a);
for z:=1 to n do
if z mod 2=1 then
write(invert(a[z]),' ')
else
write(a[z],' ');
readln;
end.
Следующий вариант
uses crt;
var s,s1,s2:string;
n,i,j,k:byte;
c:char;
begin
clrscr;
writeln('Введите последовательность слов, разделенных пробелами');
readln(s);
s2:='';
i:=1;n:=0;
while i<=length(s) do
if (s[i]<>' ')and ((s[i-1]=' ')or(i=1)) then{если буква, а перед ней пробел, или она первая}
begin
k:=i;s1:='';n:=n+1;
while (s[k]<>' ')and(k<=length(s))do {пока не пробел и не конец строки}
begin
s1:=s1+s[k];
k:=k+1;{идем вперед}
end;
if n mod 2=0 then{если номер четный}
for j:=1 to length(s1)div 2 do
begin
c:=s1[j];
s1[j]:=s1[length(s1)-j+1];{переворачиваем слово}
s1[length(s1)-j+1]:=c;
end;
s2:=s2+s1; {пишем в новую строку}
i:=i+length(s1);{перепрыгиваем}
end
else
begin
s2:=s2+s[i];{если не слово, пишем и идем вперед}
i:=i+1;
end;
write(s2);
readln
end.