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

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

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

Удалите все столбцы, в которых находится минимальный элемент, а затем строки, в которых больше одного максимального элемента. Если такого столбца или строки нет, то вывести сообщение об этом.

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

textual
Листинг программы
uses crt;
const nmax=10;
var a:array[1..nmax,1..nmax] of integer;
    m,n,i,j,min,max,k,q:integer;
    b:set of byte;
begin
randomize;
repeat
write('Количество строк от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
repeat
write('Количество столбцов от 2 до ',nmax,' m=');
readln(m);
until m in [2..nmax];
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    a[i,j]:=random(10);
    write(a[i,j]:3);
   end;
  writeln;
 end;
{найдем мин и макс}
min:=a[1,1];
max:=a[1,1];
for i:=1 to n do
for j:=1 to m do
if a[i,j]<min then min:=a[i,j]
else if a[i,j]>max then max:=a[i,j];
writeln('Минимальный элемент=',min);
writeln('Максимальный элемент=',max);
{запомним строки где больше 1 максимального}
b:=[];
for i:=1 to n do
 begin
  q:=0;
  for j:=1 to m do
  if a[i,j]=max then inc(q);
  if q>1 then b:=b+[i];
 end;
{удаление столбцов с минимальным}
j:=1;
while j<=m do
 begin
  q:=0;
  i:=1;
  while (i<=n)and(q=0) do
  if a[i,j]=min then q:=1
  else inc(i);
  if q=1 then{если есть минимальный}
   begin
    if j<m then
     begin
      for k:=j to m-1 do{от этого столбца до предпоследнего}
      for i:=1 to n do{всем элементам столбцов}
      a[i,k]:=a[i,k+1];{присваиваем значения правого}
     end;
    m:=m-1;{уменьшаем количество}
   end
  else j:=j+1;{если нет минимального, вперед}
 end;
if m=0 then writeln('Все столбцы удалены!')
else
 begin
  writeln('Удаление столбцов с минимальными:');
  for i:=1 to n do
   begin
    for j:=1 to m do
    write(a[i,j]:3);
    writeln;
   end;
  if b=[] then writeln('В матрице не было строк с более чем 1 максимальным')
  else
   begin
    writeln('Строки в которых было более 1 максимального');
    for i:=1 to n do
    if i in b then write(i,' ');
    writeln;
    writeln('Их удаление');
    i:=n;{начнем снизу}
    while i>1 do
    if i in b then{если есть}
     begin
      if i<n then
       begin
        for k:=i to n-1 do{от этой строки до предпоследней}
        for j:=1 to m do{всем элементам строки}
        a[k,j]:=a[k+1,j];{присваиваем значения нижней}
       end;
      n:=n-1;{уменьшаем количество}
      i:=i-1;
     end
    else i:=i-1;{если нет, вверх}
   writeln('n=',n);
   for i:=1 to n do
    begin
     for j:=1 to m do
     write(a[i,j]:3);
     writeln;
    end;
  end;
 end;
end.

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

В данном коде используется язык программирования Pascal ABC. Он предназначен для создания и выполнения программ на языке Pascal. В начале кода происходит инициализация переменных и объявление массива a, который будет представлять собой матрицу. Далее идет цикл, который повторяется до тех пор, пока не будет введено определенное количество строк и столбцов для матрицы. В каждой итерации цикла происходит ввод данных для новой строки или столбца. После этого происходит поиск минимального и максимального элементов в матрице. Для этого используется два указателя, один из которых начинает двигаться по строкам, а другой - по столбцам. Если текущий элемент меньше минимального, то обновляется значение минимального элемента. Аналогично, если текущий элемент больше максимального, то обновляется значение максимального элемента. Затем происходит удаление столбцов, в которых находится минимальный элемент. Для этого используется еще один указатель, который начинает двигаться по столбцам. Если текущий столбец содержит минимальный элемент, то его значение копируется в следующий столбец, а указатель сдвигается на одну позицию вправо. Количество столбцов уменьшается на единицу. Если после удаления всех столбцов с минимальным элементом остается ноль столбцов, то выводится сообщение о том, что все столбцы были удалены. В противном случае выводится информация о количестве строк с более чем одним максимальным элементом. В конце кода выводится итоговая информация о матрице, включая значения минимального и максимального элементов, а также количество строк и столбцов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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