Нужно написать программу на Паскале, которая будет удалять из строчки все
Нужно написать программу на Паскале, которая будет удалять из строки все стоящие попорядку однообразные элементы, если их больше 2. Образцы: aabbbc -gt; aac;
aabbbac -gt; c;
София Силанова
"будет удалять из строчки все стоящие попорядку схожие элементы, если их больше 2". aabbbac -> c; Куда делись a? Ведь кол-во попорядку идущих a не больше 2, либо считается кол-во всех а в строке? Тогда зачем писать о том что удаляются попорядку стоящие элементы? Пример правильно подобран? Если кол-во а в строке больше двух (не главно попорядку идущие они либо нет) , то они удаляются? Этот вывод можно сделать из заключительного образца, в задаче, как понял речь о приятелем.
Shhadneva Oksana
При удалении bbb aa и ac сдвигаются и выходит aaac
2 ответа
Виталик Гришмановский
Var s:string; c:char; i:integer;
begin
write('s = '); readln(s);
i:=1;
while (i+2lt;=length(s)) do
if(s[i]=s[i+1])and(s[i+1]=s[i+2])
then begin
c:=s[i];
while (ilt;=length(s))and(c=s[i]) do delete(s,i,1);
i:=1;
end
else i:=i+1;
writeln(s);
end.
begin
write('s = '); readln(s);
i:=1;
while (i+2lt;=length(s)) do
if(s[i]=s[i+1])and(s[i+1]=s[i+2])
then begin
c:=s[i];
while (ilt;=length(s))and(c=s[i]) do delete(s,i,1);
i:=1;
end
else i:=i+1;
writeln(s);
end.
Альбина
Было бы не плохо, если бы ваша программа удаляла символы, если их больше 3
Костя
Рекурсивный подход.(Знаки тоже устраняет)
function grad(s:string):string;
var
i:byte;
detect:boolean;
begin
while i lt; 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.
function grad(s:string):string;
var
i:byte;
detect:boolean;
begin
while i lt; 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.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
Облако тегов