Паскаль, двумерные массивы, min и max

Ответить
Dinosaur
Сообщения: 1
Зарегистрирован: 19 дек 2013, 13:09

19 дек 2013, 13:22

Задание. В задной матрице n=6, m=9 поменять местами строку, в которой находится максимальный елемент со строкой, в которой находится минимальный елемент.

Я смогла найти только мах и min всей матрицы, а дальше не разберу что делать. Вот как я искала эти елементы, но не учла там в какой строке они находятся так как не знаю как правильно это записать. :confused:

Код: Выделить всё

program z13_1;

const
  n = 6;
  m = 9;

var
  a: array[1..n, 1..m] of integer;
  max: array[1..n] of integer;
  min: array[1..n] of integer;
  maximum: integer; minimum: integer; i, j: integer;

begin
  randomize; 
  writeln('Матрица:'); 
  for i := 1 to n do 
  begin   
    for j := 1 to m do 
    begin
      a[ i, j ] := random(101) - 20; 
      write(a[ i, j ]:5); 
    end; 
    writeln; 
  end; 
  for i := 1 to n do
  begin
    max[i] := a[i, 1];
    for j := 2 to m do
      if a[i, j] > max[i]
         then 
      begin
        max[i] := a[i, j];
      end;   
  end;
  maximum := max[1];
  for i := 2 to n do
    if max[i] > maximum
      then maximum := max[i];
  writeln('Максимум матрицы A[1..n,1..m]=', maximum);
  for i := 1 to n do
  begin
    min[i] := a[i, 1];  
    for j := 2 to m do
      if a[i, j] < min[i]
         then 
      begin
        min[i] := a[i, j];
      end;    
  end;
  minimum := min[1];
  for i := 2 to n do
    if min[i] < minimum
      then minimum := min[i];
  writeln('Минимум матрицы A[1..n,1..m]=', minimum);
  
end.
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

20 дек 2013, 11:30

Во-первых, делать две пары циклов не нужно, все можно уместить в одну. Во-вторых, без вспомогательных массивов тоже можно обойтись.
[syntax='Delphi']
imax:=1; jmax:=1; imin:=1; jmin:=1;
for i:= 1 to N do
for j:= 1 to M do begin
if A[i,j] > A[imax, jmax] then begin imax:=i; jmax:=j; end;
else if A[i,j] < A[imin, jmin] then begin imin:=i; jmin:=j; end;
end;
[/syntax]
Более того, этот вложенный цикл можно объединить с циклом генерации значений в матрице.
После этого imax, jmax - координаты максимума, imin, jmin - координаты минимума
Поменять местами значения двух переменных можно двумя основными способами: с дополнительной переменной
tmp:=a; a:=b; b:=tmp;
или извратно, но математически верно
a:=a+b; b:=a-b; a:=a-b;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить