Дана прямоугольная матрица A(nxm). Заменить наименьший элемент каждой строк - Pascal ABC

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

Дана прямоугольная матрица A(nxm). Заменить наименьший элемент каждой строк, начиная со второй, наибольшим элементом предыдущей строки. Нашел такой код, не получилось его подправить, постоянно выдает ошибки(нужно было добавить заполнение и оформление, по словам автора, что и не вышло)
var
  i,j,Min,Max,MaxIdx,MinIdx,PredMax : Integer;
Begin
  For i:=1 To n Do // Цикл по строкам
  Begin
    //Ищем минимальный и максимальный элементы строки
    Min:=A[i,1];
    Max:=A[i,1];
    MaxIdx:=1;
    MinIdx:=1;
    For j:=1 To m Do // Цикл по столюцам
    If A[i,j]>Max Then
    Begin
      Max:=A[i,j];
      MaxIdx:=j;
    End Else
    If i<>1 Then
    If A[i,j]<Min Then
    Begin
      Min:=A[i,j];
      MinIdx:=j;
    End;
 
    If i<>1 Then
    //Заменяем
    A[i,MinIdx]:=PredMax;
    PredMax:=Max;
  End;
End;


textual

Код к задаче: «Дана прямоугольная матрица A(nxm). Заменить наименьший элемент каждой строк - Pascal ABC»

const n=4;m=9;
type mas=array[1..m] of integer;
     matr=array[1..n] of mas;
var a:matr;i,j,tmp:integer;
procedure vv_mas(var x:matr;s:string;f:boolean);
var i,j:integer;
begin
 writeln(s);
 for i:=1 to n do
  begin
   for j:=1 to m do
    begin
     if f then x[i,j]:=random(11);
     write(x[i,j]:3)
    end;
   writeln
  end 
end;
function maxmin_s(x:mas;f:boolean):integer;
var i,mm:integer;
begin
 mm:=x[1];
 for i:=2 to m do if (x[i]>mm)=f then mm:=x[i];
 maxmin_s:=mm
end;
begin
 randomize;
 vv_mas(a,'исходная:',true);
 for i:=n downto 2 do
  begin
   tmp:=maxmin_s(a[i],false);
   for j:=1 to m do if tmp=a[i,j] then a[i,j]:=maxmin_s(a[i-1],true)
  end; 
 vv_mas(a,'полученная:',false) 
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

6   голосов, оценка 3.833 из 5

Источник
Похожие ответы