Подавление повторяющихся символов - Pascal ABC
Формулировка задачи:
Вводится последовательность строк, составленных из символов некоторого алфавита. В каждой строке, содержащей последовательность повторяющихся подряд символов, последняя заменяется эквивалентной последовательностью вида *(k)a, где k-число повторений некоторого символа"a".
Решение задачи: «Подавление повторяющихся символов»
textual
Листинг программы
procedure zamena(var s:string); var i,j,h:byte; s1:string; begin i:=length(s); //начнем с конца while i>=1 do begin h:=0; j:=i; while (j>=1)and(s[j]=s[i]) do //пока символы равны s[i] begin h:=h+1; //считаем и идем к началу j:=j-1; end; if h>1 then //если их больше 1 begin delete(s,j+1,h-1);//удалям все одинаковые кроме одного s1:='('+inttostr(h)+')'; //такую строку insert(s1,s,j+1); //вставляем перед оставшися символом i:=j; //переходим вперед на следующий символ end else i:=i-h; //если не больше 3, просто перешагиваем end; writeln(s); end; var s,s1:string; n,i:integer; begin write('Количество строк n='); readln(n); writeln('Введите ',n,' строк символов без круглых скобок с группами одинаковых символов'); for i:=1 to n do begin readln(s); zamena(s); end; end.
Объяснение кода листинга программы
Этот код написан на языке Pascal ABC и выполняет следующую задачу: удаляет повторяющиеся символы из строки. Вот как это работает:
- Создается процедура
zamena
, которая принимает строкуs
в качестве параметра. Внутри процедуры используются три переменные:i
,j
иh
. Переменнаяi
устанавливается равной длине строкиs
, а переменнаяj
устанавливается равнойi
. Затем циклwhile
выполняется до тех пор, покаj
больше или равно 1 и символыs[j]
иs[i]
равны. Внутри цикла переменнаяh
устанавливается равной суммеh
и 1, а переменнаяj
устанавливается равнойj
минус 1. Еслиh
больше 1, то все повторяющиеся символы, кроме одного, удаляются из строкиs
, и строка преобразуется в формат(n)
, гдеn
- количество уникальных символов. Затем вставляется оставшийся символ перед последним символом строкиs
. И, наконец, переменнаяi
устанавливается равнойj
. - Создается переменная
s1
типаstring
, которая используется для хранения промежуточных результатов. - Создается переменная
n
типаinteger
, которая используется для хранения количества строк символов, введенных пользователем. - Выводится сообщение с запросом количества строк символов.
- Читается количество строк символов от пользователя.
- Для каждой строки символов, введенной пользователем, вызывается процедура
zamena
, передавая строку в качестве аргумента. - Выводится результат обработки строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д