удаление слова

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
Ler44ikk
Сообщения: 2
Зарегистрирован: 22 ноя 2009, 13:48

помогите пожалуйста как сделать))
.дана некоторая последовательность слов. Вывести на печать слова, отличные от указанного слова Х.
вот моя программка, но она не работает, в чем ошибка?
Program рор;
Var st: string;
x:char;
i:integer;
Begin
Writeln (‘vvedi stroky’);
Read (st);
Writeln (‘vvedi clovo’);
Read (x);
for I:=1 to lenght(st)
while st=x do
delete (st,pos(x,x),i);
Writeln (st);
End.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

В том, что если у вас 100-символьная строка, вы 100 раз проверяете, не является ли эта строка введенным словом. А это в общем случае не так.
delete (st,pos(x,x),i) - вне зависимости от x удаляет из строки st начальные символы в количестве i штук.
Правильный цикл такой
while pos(x,s)>0 do delete(s, pos(x,s), length(x));
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

да и ввод инфы лучше завершать Enter'ом сл-но не Read a Readln
Изображение
Ler44ikk
Сообщения: 2
Зарегистрирован: 22 ноя 2009, 13:48

спасибочки огромное!!!
Георгий1
Сообщения: 2
Зарегистрирован: 03 дек 2009, 13:49

А такой цикл является правильным????
for i:=1 to length(s) do begin
while pos(s1,s)>0 do begin
delete (s,pos(s1,s),length(s1));
end;
end;
writeln(s);
readln;
end.
Где s1 и s это искомое слово и строка соответственно.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

А зачем делать еще цикл по длине s? Если уж использовать pos, вполне бы хватило
while pos(s1,s)>0 do delete (s,pos(s1,s),length(s1));
writeln(s);
readln;
end.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Георгий1
Сообщения: 2
Зарегистрирован: 03 дек 2009, 13:49

Ты прав =)
Ответить