Задача: все нечетные слова то есть 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.
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.
1. Ставь отступы: каждый begin - +2 пробела, end - -2 пробела. И код вообще лучше на pastebin.com выкладывать.
2. Значительно легче не в исходной строке удалять и переворачивать, а собирать новую строку из четных перевернутых слов. Кстати, это и быстрее - удаление двигает всю строку, это (относительно) медленная операция.
2. Значительно легче не в исходной строке удалять и переворачивать, а собирать новую строку из четных перевернутых слов. Кстати, это и быстрее - удаление двигает всю строку, это (относительно) медленная операция.
Накручено что-то слишком много. Присылай запрос мне на почту.
Похожие вопросы
- Pycharm (Пожалуйста, помогите с написанием программы)
- Помогите в написании программы.
- помогите с написанием программ на паскале
- Помогите с написанием программы C++
- Помогите с написанием программы на языке Ассемблер, алгоритм знаю, вот только команды самого языка - не очень.
- помогите с написание программы плиз:
- Помогите в написании программы на С++
- Помогите в написании программы на языке с++
- Помогите в написании программы на языке С++
- Пожалуйста помогите в написании программы на С++