Удалить из массива повторное вхождение букв - PascalABC.NET
Формулировка задачи:
Удалить из массива повторное вхождение символов
Вот что у меня получилось...
Листинг программы
- var a:packed array [1..110] of char;
- i,j,k,t:integer;
- begin
- k:=10;
- for i:=1 to 10 do
- begin
- j:=j+1;
- readln(a[i]);
- a[j]:=a[i];
- end;
- i:=1;
- while i<10 do
- begin
- for j:=10 downto i+1 do
- if a[j]=a[i] then a[j]:='0';
- i:=i+1;
- end;
- j:=1;
- while j<=k do
- if a[j]='0' then
- begin
- for i:=j to k-1 do
- a[i]:=a[i+1];
- k:=k-1;
- end
- else j:=j+1;
- for j:=1 to k do
- write(a[j]);
- end.
Решение задачи: «Удалить из массива повторное вхождение букв»
textual
Листинг программы
- var a:packed array [1..110] of char;
- i,j,k,t:integer;
- begin
- k:=10;
- for i:=1 to k do
- readln(a[i]);
- writeln('Исходный массив');
- for i:=1 to k do
- write(a[i]);
- writeln;
- i:=1;
- while i<k do
- begin
- j:=i+1;
- while j<=k do
- if a[j]=a[i] then
- begin
- k:=k-1;
- if j<k then
- for t:=j to k-1 do
- a[t]:=a[t+1];
- end
- else j:=j+1;
- i:=i+1;
- end;
- writeln('Массив без повторов');
- for j:=1 to k do
- write(a[j]);
- end.
Объяснение кода листинга программы
В этом коде представлен алгоритм удаления повторяющихся элементов из массива в языке программирования PascalABC.Net.
- Переменные:
a
- массив символов, в котором удаляются дубликаты.i
,j
,k
,t
- целочисленные переменные, используемые в циклах.
- Цикл и чтение данных:
- Строка
k:=10;
устанавливает размер массива в 10 элементов. - Цикл
for i:=1 to k do readln(a[i]);
считывает 10 символов из массива. - Вывод исходного массива с помощью цикла
for i:=1 to k do write(a[i]);
.
- Строка
- Удаление дубликатов:
- Цикл
i:=1;
инициализирует переменную для обхода массива. - Внутренний цикл
while i<k do
начинается, когда значениеi
меньше текущего размера массива. - Внутренний цикл
while j<=k do
проверяет каждый элемент массива, начиная сj=i+1
, чтобы избежать удаления самого себя. - Если элементы
a[j]
иa[i]
совпадают, то выполняется следующий код: - Строка
k:=k-1;
уменьшает размер массива на 1. - Если
j<k
, то используется циклfor t:=j to k-1 do a[t]:=a[t+1];
, чтобы сдвинуть все элементы справа отj
на одну позицию вправо. - Если элементы не совпадают, то
j:=j+1;
переходит к следующему элементу для проверки. - После выхода из внутреннего цикла
while j<=k do
, значениеi
увеличивается на 1.
- Цикл
- Вывод отработанного массива:
- Вывод отработанного массива с помощью цикла
for j:=1 to k do write(a[j]);
. В итоге, данный код считывает 10 символов, удаляет повторяющиеся элементы и выводит окончательный массив.
- Вывод отработанного массива с помощью цикла
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д