Помощь - Поиск - Пользователи - Календарь
Полная версия: Заковыка со строкой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
TBVlad
Смысл задачи вот в чём:
Программа должна удалить из строки все слова с нечётной длиной. Но то, что я запостю ниже, выполняется неправильно: колбасит чётные слова и т.д. (лажа появляется после выполнения первого delete в строке).

Вот этот код (он компилируется).

Код
Program String13;
Var s,r : string;
i,k,n : integer;

Begin
Writeln('Vvedite stroku >');
Readln(s);

n:=length(s);
i:=1;
While i<=n do
Begin
k:=0;
While (s[i]<>' ') and (i<=n) do
Begin
k:=k+1;
i:=i+1;
End;
r:=copy(s,i-k,k);
If length(r) mod 2<>0 then delete(s,i-k,k);
i:=i+1;
End;
Writeln('Rezultat - ', s);
End.
volvo
А так:
Program String13;
Var
s: string;
i, k: integer;

Begin
Writeln('Vvedite stroku >');
Readln(s);
i := 1;
While i <= length(s) do Begin
k := 0;
While (s[i] <> ' ') and (i <= length(s)) do Begin
inc(k); inc(i);
End;

If odd(k) then begin
delete(s,i-k,k);
dec(i, k);
end
else inc(i);

End;
Writeln('Rezultat - ', s);
End.

?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.