Есть ответ 👍

Необходимо написать программу на паскале, которая будет удалять из строки все стоящие подряд одинаковые элементы, если их больше 2. примеры: aabbbc -> aac; aabbbac -> c;

253
422
Посмотреть ответы 3

Ответы на вопрос:


Var s: string; c: char; i: integer; begin write('s = '); readln(s); i: =1; while (i+2< =length(s)) do   if(s[i]=s[i+1])and(s[i+1]=s[i+2])   then  begin           c: =s[i];         while (i< =length(s))and(c=s[i]) do delete(s,i,1);         i: =1;         end   else i: =i+1; writeln(s); end.
pachev
4,6(75 оценок)

Рекурсивный подход.(символы тоже удаляет) function grad(s: string): string; var i: byte; detect: boolean; begin while i < length(s) - 2 do begin inc(i); if (s[i] = s[i+1]) and (s[i] = s[i+2]) then {проверка последовательности из 3 елементов} begin delete(s,i,3); {если да - удаляем их} detect: =true; {логическая переменная регистрирует изменение строки} end; end; if detect = true then s: =grad(s); {если строку изменили , проверяем не появились ли там еще последовальности} grad: =s;   end; var s: string; begin readln(s); writeln(grad(s)); end.

Массив- массив=нет массива

Популярно: Информатика