Другие языки программирования и технологии

Помогите с написанием программы

Задача: все нечетные слова то есть 1е 3е 5е.... удалить а все четные перевернуть на турбо паскале. У меня все прекрасно удалялось но переворачивалось только второе слово не могу ошибку найти на абс паскале вообще Введи строку
dfg dfg dfg
Ошибка времени выполнения: System.IndexOutOfRangeException: Индекс находился вне границ массива.
Стек:
в p2.p2.$Main()
в 2.Program.Main()



Здесь напишу программу, которую написал
program p2;
var s,s2:string;
k,a,x,i,n,l,m,c:integer;
begin

writeln('Введи строку');
readln(s);
n:=length(s);

a:=0;

if s[1]<>' ' then begin
i:=1;
while s[i]=' ' do begin
a:=a+1;
i:=i+1;
end;
delete(s,1,a);
end;

x:=1;

for i:=1 to n do
if (s[i]=' ') and (s[i+1]<>' ') then begin x:=x+1;

if x mod 2<>0 then begin k:=i+1;
while s[k]<>' ' do begin
k:=k+1;
a:=a+1;
end;
delete(s,k,a);
a:=0;
end;

if x mod 2=0 then begin k:=i+1;
while s[k]<>' ' do begin
k:=k+1;
a:=a+1;
end;
l:=i+1;
for m:=k downto l do begin
s2:=s2+s[m];
delete(s,m,a);end;
for c:=l to k do
s:=s2;
end;
a:=0;
end;

writeln(s);
readln;
end.
var
    s: string;
    c, b, l, k: integer;
    o, i: boolean;
begin
    write('string? ');
    readln(s);
    writeln(s);
    s := s + ' ';
    for c := 1 to length(s) do begin
        if not i and (s[c] ' ') then begin
            i := true;
            o := not o;
            b := c; l := 1;
        end
        else if i and (s[c] = ' ') then begin
            if not o then begin
                for k := b + l - 1 downto b do write(s[k]);
                write(' ');
            end;
            i := false;
        end
        else
            inc(l);
    end;
    writeln;
end.
Эдуард Попов
Эдуард Попов
77 312
Лучший ответ
1. Ставь отступы: каждый begin - +2 пробела, end - -2 пробела. И код вообще лучше на pastebin.com выкладывать.
2. Значительно легче не в исходной строке удалять и переворачивать, а собирать новую строку из четных перевернутых слов. Кстати, это и быстрее - удаление двигает всю строку, это (относительно) медленная операция.
В@нька_ *
В@нька_ *
74 588
Накручено что-то слишком много. Присылай запрос мне на почту.