Удалить из массива повторное вхождение букв - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Удалить из массива повторное вхождение символов Вот что у меня получилось...
Листинг программы
  1. var a:packed array [1..110] of char;
  2. i,j,k,t:integer;
  3. begin
  4. k:=10;
  5. for i:=1 to 10 do
  6. begin
  7. j:=j+1;
  8. readln(a[i]);
  9. a[j]:=a[i];
  10. end;
  11. i:=1;
  12. while i<10 do
  13. begin
  14. for j:=10 downto i+1 do
  15. if a[j]=a[i] then a[j]:='0';
  16. i:=i+1;
  17. end;
  18. j:=1;
  19. while j<=k do
  20. if a[j]='0' then
  21. begin
  22. for i:=j to k-1 do
  23. a[i]:=a[i+1];
  24. k:=k-1;
  25. end
  26. else j:=j+1;
  27.  
  28. for j:=1 to k do
  29. write(a[j]);
  30. end.

Решение задачи: «Удалить из массива повторное вхождение букв»

textual
Листинг программы
  1. var a:packed array [1..110] of char;
  2.     i,j,k,t:integer;
  3. begin
  4. k:=10;
  5. for i:=1 to k do
  6. readln(a[i]);
  7. writeln('Исходный массив');
  8. for i:=1 to k do
  9. write(a[i]);
  10. writeln;
  11. i:=1;
  12. while i<k do
  13.  begin
  14.   j:=i+1;
  15.   while j<=k do
  16.   if a[j]=a[i] then
  17.    begin
  18.     k:=k-1;
  19.     if j<k then
  20.     for t:=j to k-1 do
  21.     a[t]:=a[t+1];
  22.    end
  23.   else j:=j+1;
  24.   i:=i+1;
  25.  end;
  26. writeln('Массив без повторов');
  27. for j:=1 to k do
  28. write(a[j]);
  29. end.

Объяснение кода листинга программы

В этом коде представлен алгоритм удаления повторяющихся элементов из массива в языке программирования PascalABC.Net.

  1. Переменные:
    • a - массив символов, в котором удаляются дубликаты.
    • i, j, k, t - целочисленные переменные, используемые в циклах.
  2. Цикл и чтение данных:
    • Строка k:=10; устанавливает размер массива в 10 элементов.
    • Цикл for i:=1 to k do readln(a[i]); считывает 10 символов из массива.
    • Вывод исходного массива с помощью цикла for i:=1 to k do write(a[i]);.
  3. Удаление дубликатов:
    • Цикл 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.
  4. Вывод отработанного массива:
    • Вывод отработанного массива с помощью цикла for j:=1 to k do write(a[j]);. В итоге, данный код считывает 10 символов, удаляет повторяющиеся элементы и выводит окончательный массив.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.385 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы