Удалить элементы массива под определёнными номерами - PascalABC.NET
Формулировка задачи:
Как удалить элементы массива под определёнными номерами?
Решение задачи: «Удалить элементы массива под определёнными номерами»
textual
Листинг программы
const max=100; var a:array[1..max] of integer; n,i,i1,i2,j:integer; begin repeat write('Размер массива n='); readln(n); until n in [1..max]; writeln('Исходный массив:'); for i:=1 to n do begin a[i]:=random(10); write(a[i]:4); end; writeln; i1:=0; i2:=0; for i:=1 to n do if a[i]=0 then begin if i1=0 then i1:=i else if i2=0 then i2:=i; end; if i1=0 then write('В массиве нет 0') else if i2=0 then write('В массиве нет двух 0') else if i2-i1=1 then write('Ноли рядом, нет элементов для удаления') else begin for i:=1 to i2-i1-1 do begin for j:=i1+1 to n-1 do a[j]:=a[j+1]; n:=n-1; end; writeln('Сжатый массив:'); for i:=1 to n do write(a[i]:4); end; end.
Объяснение кода листинга программы
- Объявлены следующие переменные:
max
- константа, задающая максимально возможный размер массива (100).a
- массив целых чисел размером от 1 доmax
.n
- переменная для хранения размера массива.i
,i1
,i2
- вспомогательные переменные для работы с массивом.j
- вспомогательная переменная для работы с циклом.
- В цикле
repeat-until
происходит следующее:- Пользователю предлагается ввести размер массива
n
. - Цикл продолжается до тех пор, пока
n
не будет введен в диапазоне от 1 доmax
.
- Пользователю предлагается ввести размер массива
- Выводится сообщение
Исходный массив:
и построчно выводятся значения элементов массиваa
с помощью циклаfor
. Каждое значение выводится с помощьюwrite(a[i]:4)
, гдеi
- номер элемента массива. - Затем инициализируются переменные
i1
иi2
для отслеживания первого и второго нулевых элементов в массиве. - Цикл
for
проходит по всем элементам массиваa
. Если элемент равен 0, то:- Если
i1
равна 0, тоi1
присваиваетсяi
, иначеi2
присваиваетсяi
.
- Если
- После цикла проверяется, есть ли в массиве ноли рядом. Если да, то выводится сообщение
Ноли рядом, нет элементов для удаления
. - Если
i1
иi2
не равны 0, то:- С помощью двух вложенных циклов
for
элементы массива сдвигаются вправо, начиная сi1+1
и доn-1
. - Переменная
n
уменьшается на 1.
- С помощью двух вложенных циклов
- Затем выводится сообщение
Сжатый массив:
и построчно выводятся значения элементов массиваa
с помощью циклаfor
и командыwrite(a[i]:4)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д