Сжать одномерный массив, выбросив нулевые элементы. - Pascal

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

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

задан массив А размерности n, содержащий несколько нулевых элементов. сжать его, выбросив эти нулевые элементы.

Решение задачи: «Сжать одномерный массив, выбросив нулевые элементы.»

textual
Листинг программы
uses crt;
var a:array[1..100] of integer;
    m,i,k:integer;
begin
Clrscr;
Write('Vvedite k: ');
Readln(k);
for i:=1 to k do
 begin
  a[i]:=random(10)-6;
  Write(a[i],'  ');
 end;
Writeln;
m:=0;
for i:=1 to k do
 if a[i]=0 then
  inc(m)
 else 
  a[i-m]:=a[i];
 k:=k-m;
for i:=1 to k do
 Write(a[i],'  ');
Readln;
end.

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

  1. Создается переменная a типа array[1..100] of integer, которая будет хранить одномерный массив целых чисел размером от 1 до 100.
  2. Создаются три переменные m, i и k типа integer. Переменная m будет использоваться для отслеживания количества нулей в массиве, переменная i - для итерации по элементам массива, а переменная k - для ввода пользователем.
  3. Выводится сообщение «Введите k: », после чего считывается значение переменной k с помощью функции Readln().
  4. Запускается цикл for, который выполняется k раз. В каждой итерации цикла значение переменной i устанавливается равным 1 и считывается значение переменной a[i] с помощью функции Readln(). Значение a[i] присваивается переменной m.
  5. Если значение a[i] равно 0, то увеличивается значение переменной m на 1. В противном случае, значение a[i] присваивается переменной a[i-m].
  6. После завершения цикла for выводится сообщение «Writeln;», затем значение переменной m уменьшается на 1 (так как каждый нулевой элемент был удален из массива).
  7. Снова запускается цикл for, который выполняется k раз. В каждой итерации цикла выводится значение a[i] с помощью функции Write() и пробел «  ».
  8. После завершения цикла for считывается значение переменной k с помощью функции Readln().
  9. Код завершается.

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

10   голосов , оценка 3.8 из 5
Похожие ответы