Удалить все столбцы, в которых есть отрицательный элемент - Pascal

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

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

Дан двумерный массив размером n*m, заполненный случайным образом. 3. Удалить все столбцы, в которых есть отрицательный элемент.

Решение задачи: «Удалить все столбцы, в которых есть отрицательный элемент»

textual
Листинг программы
  1. const nmax=10;
  2. var a:array[1..nmax,1..nmax] of integer;
  3.     m,n,i,j,k:integer;
  4. begin
  5. randomize;
  6. repeat
  7. writeln('Введите размеры матрицы от 1 до ',nmax);
  8. readln(m,n);
  9. until(m in [1..nmax])and(n in [1..nmax]);
  10. writeln('Исходная матрица');
  11. for i:=1 to m do
  12.  begin
  13.   for j:=1 to n do
  14.    begin
  15.     a[i,j]:=-10+random(50);
  16.     write(a[i,j]:4);
  17.    end;
  18.   writeln;
  19.  end;
  20. j:=1;
  21. while j<=n do //проверякм все столбцы
  22.  begin
  23.   k:=0;
  24.   i:=1;
  25.   while (i<=m)and(k=0) do//ищем в них отрицательный
  26.   if a[i,j]<0 then k:=1 //если есть,дальше не ищем
  27.   else inc(i);
  28.   if k=1 then //нашли
  29.    begin
  30.     if j=n then dec(n)//если он последний, обрезаем
  31.     else
  32.      begin
  33.       for k:=j to n-1 do//сдвигаем столбцы срава на данный столбец
  34.       for i:=1 to m do
  35.       a[i,k]:=a[i,k+1];
  36.       dec(n); //меньшаем количество столбцов
  37.      end;
  38.    end
  39.   else inc(j);//если нет отрицательнх, на 1 вперед
  40.  end;
  41. writeln('n=',n);
  42. writeln('Удаление столбцов с отрицатльными');
  43. if n=0 then write('Все столбцы удалены')
  44. else
  45. for i:=1 to m do
  46.  begin
  47.   for j:=1 to n do
  48.   write(a[i,j]:4);
  49.   writeln;
  50.  end;
  51. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы