Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ строки

Автор: Маша 14.03.2007 2:07

Помогите пожалуйста найти ошибку в коде.
Задача простая: удалить из строки последнее слово


procedure del_slovo(s:string);
var i,k,j:integer;q:boolean;
begin
k:=0; i:=length(s);

while s[i]=' ' do begin delete(s,i,1); i:=i-1; end;
q:=false;
while (not q) and (i>=1) do
begin
if (s[i]<>' ') and (s[i-1]=' ')
then
begin delete(s,i-1,length(s)-i+2); q:=true; end
else i:=i-1;
end;
end;


Никак не могу понять, что не так. Вроде должно работать

Автор: Артемий2 14.03.2007 2:31

procedure del_slovo(var s:string);
var i,k,j:integer;q:boolean;
begin
k:=0; i:=length(s);

while s[i]=' ' do begin delete(s,i,1); i:=i-1; end;
q:=false;
while (not q) and (i>=1) do
begin
if (s[i]<>' ') and (s[i-1]=' ')
then
begin delete(s,i-1,length(s)-i+2); q:=true; end
else i:=i-1;
end;
end;

Про var не забывай!

Автор: Гость 14.03.2007 2:38

Да, точно! Я не заметила. Спасибо!

Автор: klem4 14.03.2007 3:34

Цитата
удалить из строки последнее слово

Если слова разделены исключительно пробелами:

while (length(s) > 0) and (s[Length(s)] = ' ')  do delete(s, Length(s), 1);
while (Length(s) > 0) and (s[length(s)] <> ' ') do delete(s, Length(s), 1);