Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Составление и отладка программ со строками.

Автор: Slash 20.05.2007 19:44

Помогите решить ! пожалуйста не думаю что для вас она составит большой труд! Зарание спасибо good.gif

Даны две строки: S1 и S2. Удалить из строки S1 все подстроки, совпадающие с S2. Если таких подстрок нет, то вывести S1 без изменений.

Делать нужно как сказал препод через pos(s2,s1)

З.Ы. не ругайте сильно если такая тема былa smile.gif

Автор: Tan 20.05.2007 19:49

Организуй цикл в котором будет осуществлятся поиск подстроки через pos и удаление (delete) с этой позиции количество символов, равное Length(S2). Условие выхода из цыкла : pos(s2,s1) = 0, то есть вхождение не найдено.
Вот тебе черновик :

uses crt;
var S1,S2 : String;
a : byte;
begin
writeln ('Input main string');
readln (S1);
writeln ('Input substring');
readln (S2);
repeat
a := pos(s2,s1);
If a <> 0 then delete (s1,a,Length(S2));
until a = 0;
writeln ('Result main string : ');
writeln (S1);
readkey;
end.

Автор: Slash 20.05.2007 20:06

спс

Автор: Tan 20.05.2007 20:08

Хотя наверно лучше было бы использовать while, он по идее и быстрее и красиве уловие будет smile.gif

Автор: Slash 20.05.2007 20:33

Цитата(Tan @ 20.05.2007 17:08) *

Хотя наверно лучше было бы использовать while, он по идее и быстрее и красиве уловие будет smile.gif

Если не сложно отпиши с с while smile.gif

Автор: Tan 20.05.2007 20:49

Попробуй сам изменить (это очень просто), общий вид цикла : для 1 команды

while условие do
, для больше чем 1 команды
while условие do begin end