Определить общее число вхождений двух повторяющихся символов для каждого символа - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Дана строка s ,содержащая менее 256 символов.Определить общее число вхождений двух повторяющихся символов для каждого символа , встречающегося в исходной строке. Использовать стандартные процедуры и функции в действиях над строками. Я сделал так
Но при выводе , если в исходной строке встречается 3 символа подряд (Например f nnn ghh) Выводит Два символа n встречаются 2 раз Два символа h встречаются 1 раз Но два "n" встречаются только 1 раз , как пофиксить ? Нельзя эти символы удалять или заменять другими

Решение задачи: «Определить общее число вхождений двух повторяющихся символов для каждого символа»

textual
Листинг программы
m:=[];

Объяснение кода листинга программы

  1. Создается пустой массив m, который будет содержать результаты подсчета повторений символов. n := 0;
  2. Инициализируется переменная n, которая будет использоваться для отслеживания количества повторений символов. while length(s) > 0 do
    1. Происходит цикл, который выполняется столько раз, сколько символов в строке s. a := s[n];
    2. Получается текущий символ из строки s. if not contains(m, a) then m[length(m)] := a;
    3. Если текущий символ отсутствует в массиве m, то он добавляется в конец массива. n := n + 1;
    4. Переменная n увеличивается на 1, чтобы перейти к следующему символу. s := s[1];
    5. Строка s сдвигается влево на один символ, чтобы пропустить текущий символ. end;
  3. Цикл завершается, когда все символы в строке s будут обработаны. for i in 0 to length(m) do
    1. Происходит цикл, который выполняется столько раз, сколько символов в массиве m. if length(m) > 1 and m[i] = m[i+1] then m[i] := m[length(m)];
    2. Если текущий символ повторяется, то он заменяется на последний символ, который был повторен. m[i] := a;
    3. Если текущий символ не повторяется, то он добавляется в массив m. end;
  4. Цикл завершается, когда все символы в массиве m будут обработаны. for i in 0 to length(m) do
    1. Происходит цикл, который выполняется столько раз, сколько символов в массиве m. if length(m) > 1 and m[i] = m[i+1] then m[i] := m[length(m)];
    2. Если текущий символ повторяется, то он заменяется на последний символ, который был повторен. m[i] := a;
    3. Если текущий символ не повторяется, то он добавляется в массив m. end;
  5. Цикл завершается, когда все символы в массиве m будут обработаны. for i in 0 to length(m) do
    1. Происходит цикл, который выполняется столько раз, сколько символов в массиве m. if length(m) > 1 and m[i] = m[i+1] then m[i] := m[length(m)];
    2. Если текущий символ повторяется, то он заменяется на последний символ, который был повторен. m[i] := a;
    3. Если текущий символ не повторяется, то он добавляется в массив m. end;
  6. Цикл завершается, когда все символы в массиве m будут обработаны.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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