В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
IG77
IG77
07.01.2021 05:47 •  Информатика

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

Ответ:
yuliayatseniuk1
yuliayatseniuk1
20.09.2020 08:22
Рекурсивный подход.(Символы тоже удаляет)
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.
0,0(0 оценок)
Ответ:
komissssarov
komissssarov
20.09.2020 08:22
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.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?