Определить общее число вхождений двух повторяющихся символов для каждого символа - Pascal ABC
Формулировка задачи:
Дана строка s ,содержащая менее 256 символов.Определить общее число вхождений двух повторяющихся символов для каждого символа , встречающегося в исходной строке. Использовать стандартные процедуры и функции в действиях над строками.
Я сделал так
Но при выводе , если в исходной строке встречается 3 символа подряд (Например f nnn ghh)
Выводит
Два символа n встречаются 2 раз
Два символа h встречаются 1 раз
Но два "n" встречаются только 1 раз , как пофиксить ? Нельзя эти символы удалять или заменять другими
Решение задачи: «Определить общее число вхождений двух повторяющихся символов для каждого символа»
textual
Листинг программы
m:=[];
Объяснение кода листинга программы
- Создается пустой массив m, который будет содержать результаты подсчета повторений символов. n := 0;
- Инициализируется переменная n, которая будет использоваться для отслеживания количества повторений символов.
while length(s) > 0 do
- Происходит цикл, который выполняется столько раз, сколько символов в строке s. a := s[n];
- Получается текущий символ из строки s. if not contains(m, a) then m[length(m)] := a;
- Если текущий символ отсутствует в массиве m, то он добавляется в конец массива. n := n + 1;
- Переменная n увеличивается на 1, чтобы перейти к следующему символу. s := s[1];
- Строка s сдвигается влево на один символ, чтобы пропустить текущий символ. end;
- Цикл завершается, когда все символы в строке s будут обработаны.
for i in 0 to length(m) do
- Происходит цикл, который выполняется столько раз, сколько символов в массиве m. if length(m) > 1 and m[i] = m[i+1] then m[i] := m[length(m)];
- Если текущий символ повторяется, то он заменяется на последний символ, который был повторен. m[i] := a;
- Если текущий символ не повторяется, то он добавляется в массив m. end;
- Цикл завершается, когда все символы в массиве m будут обработаны.
for i in 0 to length(m) do
- Происходит цикл, который выполняется столько раз, сколько символов в массиве m. if length(m) > 1 and m[i] = m[i+1] then m[i] := m[length(m)];
- Если текущий символ повторяется, то он заменяется на последний символ, который был повторен. m[i] := a;
- Если текущий символ не повторяется, то он добавляется в массив m. end;
- Цикл завершается, когда все символы в массиве m будут обработаны.
for i in 0 to length(m) do
- Происходит цикл, который выполняется столько раз, сколько символов в массиве m. if length(m) > 1 and m[i] = m[i+1] then m[i] := m[length(m)];
- Если текущий символ повторяется, то он заменяется на последний символ, который был повторен. m[i] := a;
- Если текущий символ не повторяется, то он добавляется в массив m. end;
- Цикл завершается, когда все символы в массиве m будут обработаны.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д