Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2013, 12:31   #1
Dumbl-D
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 26
Печаль Паскаль, двумерные массивы, min и max

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

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

Код:
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.
Dumbl-D вне форума Ответить с цитированием
Старый 19.12.2013, 13:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
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;
  maxi,maxj: integer; mini,minj: integer; i, j: integer;

begin
  randomize; 
  writeln('Матрица:'); maxi:=1;mini:=1;maxj:=1;minj:+1;
  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);
      if a[i,j]>a[maxi,maxj] then begin maxi:=i;maxj:=j; end; 
      if a[i,j]<a[mini,minj] then begin mini:=i;minj:=j; end; 
    end; 
    writeln; 
  end; 
 
Теперь меняем строки
  for i:=1 to m do begin
   j:=a[maxi,maxj]; a[maxi,maxj]:=a[mini,minj]; a[mini,minj]:=j;
  end;

А тут выводи матрицу на экран 

  writeln('Максимум матрицы A[1..n,1..m]=', a[maxi,maxj]);
  writeln('Минимум матрицы A[1..n,1..m]=', a[mini,minj]);
  
end.
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2013, 13:37   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Ваша ошибка, как Вы правильно уже сами догадались, в том, что Вы ищите минимальную(максимальную) величину, вместо того, чтобы искать ИНДЕКС (позицию в массиве, в данном случае СТРОКУ) минимального (или максимального элемента).
Что особенно примечательно, поиск индекса ничуть не сложнее обычного поиска!

Рассмотрите такой код:
Код:
const
  n = 6;
  m = 9;

var
  a: array[1..n, 1..m] of integer;
  maxI, maxJ, minI, minJ: integer;
  i, j: integer;

begin
  randomize;
  writeln('Матрица:');
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[ i, j ] := -20 + random(101);
      write(a[ i, j ]:5);
    end;
    writeln;
  end;

  MaxI := 1;  MaxJ := 1; {изначально считаем что элемент 1,1 самый большой}
  MinI := 1;  MinJ := 1; {изначально считаем что элемент 1,1 самый маленький}

  for i := 1 to n do
    for j := 1 to m do begin

      if a[i, j] > a[MaxI, MaxJ] then
      begin
         MaxI := i;
         MaxJ := j;
      end;

      if a[i, j] < a[MinI, MinJ] then
      begin
         MinI := i;
         MinJ := j;
      end;
    end;

  writeln('Максимум матрицы A[1..n,1..m]=', a[MaxI, MaxJ],
           ' в позиции строка ',MaxI,' столбец ',MaxJ);
  writeln('Минимум матрицы A[1..n,1..m]=', a[MinI, MinJ],
           ' в позиции строка ',MinI,' столбец ',MinJ);
  Readln  
end.

p.s. Теперь поменять строчки матрицы с индексами MaxI и MinI сможете?



UPDATE
АААААА! Stilet опередил!!!!

Последний раз редактировалось Serge_Bliznykov; 19.12.2013 в 14:43. Причина: подправил ошибку в коде
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.12.2013, 14:14   #4
Dumbl-D
Пользователь
 
Регистрация: 25.11.2013
Сообщений: 26
По умолчанию

Да, уже разобрала все, спасибо всем большое))
Dumbl-D вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
n - массивов, разной размерности, нужно найти min и max в этих массивах. Из полученных min найти наименьший элемент, из max наибол dmks Помощь студентам 5 09.10.2013 20:48
списке целых чисел все элементы между max и min заменить полусуммой max и min Roman one C/C++ Базы данных 0 20.12.2012 12:14
нахождение MIN и MAX.Паскаль Яська Помощь студентам 4 21.01.2010 08:19
Паскаль.нахождение MIN и MAX Яська Помощь студентам 1 07.12.2009 19:12
m=min(max{aij}) Массивы на C++ Wia Помощь студентам 2 22.12.2008 19:23