Удалить элементы массива - Pascal (89845)
Формулировка задачи:
Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-10,60]. Удалить из него все элементы, в которых последняя цифра нечетная, а само число кратно 3.
Решение задачи: «Удалить элементы массива»
textual
Листинг программы
uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
n,m,i,j:byte;
begin
clrscr;
randomize;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Массив:');
for i:=1 to n do
begin
a[i]:=random(71)-10;
write(a[i]:4);
end;
writeln;
writeln;
m:=n;
i:=1;//смотрим массив с начала
while i<=n do//пока не конец
if(odd(a[i] mod 10))and(a[i] mod 3=0) then//если по условию
begin
if i=n then n:=n-1//если последний, обрезаем массив
else//иначе
begin
for j:=i to n-1 do//сдвидаем конец массива влево на этот элемент
a[j]:=a[j+1];
n:=n-1;//обрезаем
end
end
else i:=i+1;
writeln('Удаление элементов кратных 3 с нечетной последней цифрой:');
if n=0 then write('Все элементы удалены')
else if n=m then write('Таких элементов в массиве нет')
else
for i:=1 to n do
write(a[i]:4);
readln
end.
Объяснение кода листинга программы
- Объявление переменных:
- a: массив для хранения чисел;
- n, m, i, j: переменные для управления циклом и обрезки массива.
- Ввод размера массива от пользователя.
- Заполнение массива случайными числами.
- Вывод на экран заполненного массива.
- Обрезка массива до указанного размера.
- Проверка каждого элемента массива на соответствие условию удаления (кратность 3 с нечетной последней цифрой).
- Если элемент удовлетворяет условию, то он удаляется путем сдвига всех последующих элементов влево на 1 позицию.
- Если после удаления всех элементов массив пуст, то выводится сообщение
Все элементы удалены. - Если ни один элемент не был удален, то выводится сообщение
Таких элементов в массиве нет. - В противном случае выводятся на экран оставшиеся элементы массива.