Страница 1 из 1

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

Добавлено: 22 ноя 2009, 13:57
Ler44ikk
помогите пожалуйста как сделать))
.дана некоторая последовательность слов. Вывести на печать слова, отличные от указанного слова Х.
вот моя программка, но она не работает, в чем ошибка?
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.

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

Добавлено: 23 ноя 2009, 09:50
Хыиуду
В том, что если у вас 100-символьная строка, вы 100 раз проверяете, не является ли эта строка введенным словом. А это в общем случае не так.
delete (st,pos(x,x),i) - вне зависимости от x удаляет из строки st начальные символы в количестве i штук.
Правильный цикл такой
while pos(x,s)>0 do delete(s, pos(x,s), length(x));

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

Добавлено: 23 ноя 2009, 13:29
Игорь Акопян
да и ввод инфы лучше завершать Enter'ом сл-но не Read a Readln

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

Добавлено: 23 ноя 2009, 16:57
Ler44ikk
спасибочки огромное!!!

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

Добавлено: 03 дек 2009, 14:34
Георгий1
А такой цикл является правильным????
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 это искомое слово и строка соответственно.

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

Добавлено: 04 дек 2009, 09:14
Хыиуду
А зачем делать еще цикл по длине s? Если уж использовать pos, вполне бы хватило
while pos(s1,s)>0 do delete (s,pos(s1,s),length(s1));
writeln(s);
readln;
end.

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

Добавлено: 04 дек 2009, 16:14
Георгий1
Ты прав =)