В массиве символов заменить определённые группы символов на заданные - Pascal ABC
Формулировка задачи:
Дан массив символов, в котором встречаются структуры <i> и </i>. Заменить каждое вхождение <i> на </i>, а каждое вхождение </i> на <#>.
Замечание: в программе следует учесть, что буква i может быть как строчной, так и прописной.
Желательно расписать какая команда что выполняет.Решение задачи: «В массиве символов заменить определённые группы символов на заданные»
textual
Листинг программы
var s: array [byte] of char; //[byte] = [0..255]
i, j, n: integer;
begin
writeln('Введите строку символов:');
n := -1; //начальное значение индекса массива (на 1 меньше low(s))
while not eoln do //ввод массива в виде строки до <Enter> или до длины 200 символов
begin
inc(n); //индекс очередногосимвола
read(s[n]); //ввод очередного символа
if n >= 200 then break
end;
readln;
for i := n downto 0 do //цикл обработки массива (символы просматриваем с конца)
if s[i] in ['i', 'I'] //если очередной символ 'i',
then begin //то заменяем
if (i > 0) and (s[i - 1] = '/') //если перед 'i' стоит '/'
then begin //то
s[i - 1] := '#'; //заменяем '/' на '#'
for j := i to n - 1 do s[j] := s[j + 1]; //сдвигаем часть массива влево, заодно затираем 'i'
dec(n) //уменьшаем максимальный индекс массива
end
else begin //иначе, если перед 'i' не стоит '/'
inc(n); //увеличиваем максимальный индекс массива
for j := n downto i + 1 do s[j] := s[j - 1]; //сдвигаем часть массива вправо
s[i] := '/'; //на освободившееся перед 'i' место записываем '/'
end
end;
writeln('Преобразованная строка:');
for i := 0 to n do write(s[i]); //выводим массив
readln //любуемся результатом
end.