Удалить все столбцы, в которых есть отрицательный элемент - 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 и выводится на экран. - Цикл по столбцам - проверятся все столбцы матрицы на наличие отрицательных элементов.
- Удаление столбцов с отрицательными элементами:
- Если в столбце найден отрицательный элемент, то этот столбец удаляется.
- Если столбец, в котором найден отрицательный элемент, является последним, то он обрезается.
- В противном случае все столбцы справа от данного столбца сдвигаются на одну позицию влево.
- Вывод результирующей матрицы - выводится матрица после удаления столбцов с отрицательными элементами или сообщение, что все столбцы удалены, в случае если матрицы не осталось. Этот код генерирует матрицу и затем удаляет столбцы, в которых есть отрицательный элемент.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д