помогите пожалуйста как сделать))
.дана некоторая последовательность слов. Вывести на печать слова, отличные от указанного слова Х.
вот моя программка, но она не работает, в чем ошибка?
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.
удаление слова
В том, что если у вас 100-символьная строка, вы 100 раз проверяете, не является ли эта строка введенным словом. А это в общем случае не так.
delete (st,pos(x,x),i) - вне зависимости от x удаляет из строки st начальные символы в количестве i штук.
Правильный цикл такой
while pos(x,s)>0 do delete(s, pos(x,s), length(x));
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

А такой цикл является правильным????
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 это искомое слово и строка соответственно.
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 это искомое слово и строка соответственно.
А зачем делать еще цикл по длине s? Если уж использовать pos, вполне бы хватило
while pos(s1,s)>0 do delete (s,pos(s1,s),length(s1));
writeln(s);
readln;
end.
while pos(s1,s)>0 do delete (s,pos(s1,s),length(s1));
writeln(s);
readln;
end.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.