Удалить все столбцы, в которых есть отрицательный элемент - Pascal
Формулировка задачи:
Дан двумерный массив размером n*m, заполненный случайным образом.
3. Удалить все столбцы, в которых есть отрицательный элемент.
Решение задачи: «Удалить все столбцы, в которых есть отрицательный элемент»
textual
Листинг программы
const nmax=10; var a:array[1..nmax,1..nmax] of integer; m,n,i,j,k:integer; begin randomize; repeat writeln('Введите размеры матрицы от 1 до ',nmax); readln(m,n); until(m in [1..nmax])and(n in [1..nmax]); writeln('Исходная матрица'); for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=-10+random(50); write(a[i,j]:4); end; writeln; end; j:=1; while j<=n do //проверякм все столбцы begin k:=0; i:=1; while (i<=m)and(k=0) do//ищем в них отрицательный if a[i,j]<0 then k:=1 //если есть,дальше не ищем else inc(i); if k=1 then //нашли begin if j=n then dec(n)//если он последний, обрезаем else begin for k:=j to n-1 do//сдвигаем столбцы срава на данный столбец for i:=1 to m do a[i,k]:=a[i,k+1]; dec(n); //меньшаем количество столбцов end; end else inc(j);//если нет отрицательнх, на 1 вперед end; writeln('n=',n); writeln('Удаление столбцов с отрицатльными'); if n=0 then write('Все столбцы удалены') else for i:=1 to m do begin for j:=1 to n do write(a[i,j]:4); writeln; end; end.
Объяснение кода листинга программы
- Константа
nmax
со значением10
, обозначающая максимальный размер массива. - Переменные
a
,m
,n
,i
,j
,k
с типомinteger
, где:a
- многомерный массив размераnmax
xnmax
для хранения элементов матрицы;m
- количество строк матрицы;n
- количество столбцов матрицы;i
- переменная цикла для итерации по строкам;j
- переменная цикла для итерации по столбцам;k
- вспомогательная переменная.
- Генерация размеров матрицы - запрашиваются размеры матрицы
m
иn
от 1 доnmax
. - Генерация исходной матрицы - заполняется массив
a
случайными числами в диапазоне от -10 до 40 и выводится на экран. - Цикл по столбцам - проверятся все столбцы матрицы на наличие отрицательных элементов.
- Удаление столбцов с отрицательными элементами:
- Если в столбце найден отрицательный элемент, то этот столбец удаляется.
- Если столбец, в котором найден отрицательный элемент, является последним, то он обрезается.
- В противном случае все столбцы справа от данного столбца сдвигаются на одну позицию влево.
- Вывод результирующей матрицы - выводится матрица после удаления столбцов с отрицательными элементами или сообщение, что все столбцы удалены, в случае если матрицы не осталось. Этот код генерирует матрицу и затем удаляет столбцы, в которых есть отрицательный элемент.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д