В массиве символов заменить определённые группы символов на заданные - 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.

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы