Удалить все столбцы, в которых есть отрицательный элемент - 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.

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

  1. Константа nmax со значением 10, обозначающая максимальный размер массива.
  2. Переменные a, m, n, i, j, k с типом integer, где:
    • a - многомерный массив размера nmax x nmax для хранения элементов матрицы;
    • m - количество строк матрицы;
    • n - количество столбцов матрицы;
    • i - переменная цикла для итерации по строкам;
    • j - переменная цикла для итерации по столбцам;
    • k - вспомогательная переменная.
  3. Генерация размеров матрицы - запрашиваются размеры матрицы m и n от 1 до nmax.
  4. Генерация исходной матрицы - заполняется массив a случайными числами в диапазоне от -10 до 40 и выводится на экран.
  5. Цикл по столбцам - проверятся все столбцы матрицы на наличие отрицательных элементов.
  6. Удаление столбцов с отрицательными элементами:
    • Если в столбце найден отрицательный элемент, то этот столбец удаляется.
    • Если столбец, в котором найден отрицательный элемент, является последним, то он обрезается.
    • В противном случае все столбцы справа от данного столбца сдвигаются на одну позицию влево.
  7. Вывод результирующей матрицы - выводится матрица после удаления столбцов с отрицательными элементами или сообщение, что все столбцы удалены, в случае если матрицы не осталось. Этот код генерирует матрицу и затем удаляет столбцы, в которых есть отрицательный элемент.

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

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