Удалить элементы массива под определёнными номерами - 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).