Удалить из массива элементы, встречающиеся ровно два раза - Pascal
Формулировка задачи:
Дан целочисленный массив размера N. Удалить из массива все элементы,
встречающиеся ровно два раза, и вывести размер полученного массива и его содержимое.решение с процедурами
Решение задачи: «Удалить из массива элементы, встречающиеся ровно два раза»
textual
Листинг программы
program pr; const max=100; type arr=array[1..max] of integer; var a:arr; n,i,j,k,g,q:integer; x:integer; procedure fill(var v:arr); // процедура заполнения массива var i:integer; begin for i:=1 to n do begin a[i]:=random(10)+1; // рандомно заполняем массив (диапазон какой надо ставь) end; writeln('Исходный массив:'); for i:=1 to n do write(a[i]:3); writeln; writeln; end; procedure delete( var v:arr); // процедура удаления повтор. эл. и вывода массива без них var i,j,k,g,q:integer; begin i:=1; while i<=n do begin k:=0; for j:=i+1 to n do if a[j]=a[i] then k:=k+1; if k=1 then begin g:=i; x:=a[i]; while g<=n do if a[g]=x then begin for q:=g to n-1 do a[q]:=a[q+1]; n:=n-1; end else g:=g+1; end else i:=i+1; end; writeln('Размер массива после сжатия = ' ,n); writeln('Массив после сжатия:'); for i:=1 to n do write(a[i]:3); end; begin write('Размер массива n= '); readln(n); fill(a); delete(a); end.
Объяснение кода листинга программы
- Создается программа на языке Pascal с именем
pr
. - В программе объявляются следующие переменные: max, которая представляет максимальное значение для элементов массива, и arr, которая представляет сам массив.
- Также объявляются переменные n, i, j, k, g и q, которые будут использоваться в процедуре удаления повторяющихся элементов.
- Создается процедура fill, которая заполняет массив случайными числами от 1 до 100.
- Затем вызывается процедура fill для заполнения массива.
- После этого выводится исходный массив.
- Создается процедура delete, которая удаляет повторяющиеся элементы из массива.
- В цикле while проверяется каждый элемент массива.
- Если текущий элемент равен предыдущему, то увеличивается счетчик k.
- Если k равно 1, то текущий элемент и его индекс сохраняются в переменных g и x.
- Затем происходит поиск следующего элемента, который равен x.
- Если такой элемент найден, то все элементы с индексами от g до n-1 переставляются, чтобы убрать повторяющийся элемент.
- После этого уменьшается значение n на 1.
- Если элемент не был найден, то увеличивается значение i.
- Если i равно n, то цикл while завершается.
- Выводится размер массива после удаления повторяющихся элементов.
- Выводится массив после удаления повторяющихся элементов.
- Запрашивается размер массива для проверки.
- Вызывается процедура fill для заполнения массива.
- Вызывается процедура delete для удаления повторяющихся элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д