Помощь - Поиск - Пользователи - Календарь
Полная версия: строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Маша
Помогите пожалуйста найти ошибку в коде.
Задача простая: удалить из строки последнее слово


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;


Никак не могу понять, что не так. Вроде должно работать
Артемий
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 не забывай!
Гость
Да, точно! Я не заметила. Спасибо!
klem4
Цитата
удалить из строки последнее слово

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

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);
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.