Необходимо написать программу на паскале, которая будет удалять из строки все стоящие подряд одинаковые элементы, если их больше 2. примеры: aabbbc -> aac; aabbbac -> c;
253
422
Ответы на вопрос:
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.
Рекурсивный подход.(символы тоже удаляет) 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.
Популярно: Информатика
-
михаил30301.06.2020 13:08
-
sukalovan015.06.2020 06:13
-
котямотя324.11.2021 09:43
-
MrZheka1703.09.2020 19:06
-
mmmkkk325.08.2022 23:25
-
kalmanbaevarrr20.04.2020 16:53
-
Nekepeshy20.11.2022 15:26
-
guest24631.08.2021 09:42
-
SadArina04.10.2021 14:15
-
mashanlo200610.01.2023 12:33