IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> строки
Маша
сообщение 13.03.2007 22:07
Сообщение #1


Гость






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


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;


Никак не могу понять, что не так. Вроде должно работать
 К началу страницы 
+ Ответить 
Артемий
сообщение 13.03.2007 22:31
Сообщение #2


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


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 не забывай!


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 13.03.2007 22:38
Сообщение #3


Гость






Да, точно! Я не заметила. Спасибо!
 К началу страницы 
+ Ответить 
klem4
сообщение 13.03.2007 23:34
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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

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

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);


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"