Написать процедуру удаления - Pascal ABC
Формулировка задачи:
Написать процедуру удаления из строки S всех вхождений подстроки Subs.
Решение задачи: «Написать процедуру удаления»
textual
Листинг программы
Procedure DelSubs(pSubs : String; Var pS : String); Var i,k : Byte; m : array[1..255] of Byte; Begin k:=0; For i:=1 to 255 do m[i]:=0; For i:=1 to Length(pS)-Length(pSubs)+1 do If Copy(pS,i,Length(pSubs))=pSubs then Begin Inc(k); m[k]:=i; end; For i:=k downto 1 do Delete(pS,m[i],Length(pSubs)); end; Var S, Subs : String; Begin S:='112211221122'; Subs:='12'; DelSubs(Subs,S); Writeln(S); end.
Объяснение кода листинга программы
- В процедуре DelSubs объявлены две переменные: pSubs (строка, в которую будут заменены подстроки) и pS (исходная строка, в которой будут найдены подстроки).
- Объявлены две переменные типа Byte: i и k. Переменная i используется для цикла, а переменная k - для подсчета количества найденных подстрок.
- Создается массив m размером 255, заполняемый нулями. Этот массив будет использоваться для хранения индексов найденных подстрок.
- Запускается цикл, в котором для каждой цифры от 1 до 255 значение переменной m[i] увеличивается на единицу, если в исходной строке pS найдена подстрока, соответствующая текущей цифре.
- После завершения первого цикла запускается второй цикл, в котором для каждой подстроки, найденной в исходной строке pS, удаляется соответствующий символ.
- В конце процедуры значение переменной k сравнивается с 1. Если k равно 1, это означает, что в исходной строке pS была найдена хотя бы одна подстрока, соответствующая подстроке pSubs. В этом случае в исходную строку pS заменяются все символы, соответствующие найденным подстрокам.
- В основной части программы объявлены две переменные: S и Subs. Переменная S инициализируется строкой '112211221122', а переменная Subs - строкой '12'.
- Запускается процедура DelSubs, передавая в нее подстроку Subs и исходную строку S.
- Выводится на экран строка S после выполнения процедуры DelSubs.