Помощь - Поиск - Пользователи - Календарь
Полная версия: Очень сложная задача на двухмерный массив (или матрицу?)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
MAD-GTX
Помогите пожалуйста с этой задачей если возможно сегодня(завтра у меня ПРЗ), в массивах не шарю совсем!

Дана матрица размером n X m. Переставляя её строки и столбцы,добиться того,чтобы наибольший элемент(или один из них) оказался в верхнем левом углу.
klem4
Находишь наибольший элемент матрицы, запоминаешь его координаты (строку столбец), далее например сначала сдвигаешь столбец влево пока он не будет первым, потом поднимаешь строку вверх пока он не будет стоять под номером 1, как поменять местами строки/столбцы - в поиск, либо: Как задать матрицу, чтобы ...
MAD-GTX
Спасибо большое за ответ,но это для меня как китайская грамота:( . Возможно ли это представить в виде текста программы на Паскале?
volvo
Возможно... Даже больше - уже выкладывалось. Искать по ключевым словам "перемещение, операция, максимальный"

Добавлено через 3 мин.
Вот тут читай: Преобразование матрицы
MAD-GTX
Спасибо за линк!Прочитал,но меня терзают смутные сомненья!
Если не трудно,ответьте удовлетворяет ли данный текст программы моей задаче?

const
 n = 3;
 m = 2;
 maxValue = 150000.0;

var
 matrix: array[1 .. n, 1 .. m] Of real;
 min: real;
 iRow, iColumn: Integer;
 count_col, count_row: Integer;

{Процедура сдвигает матрицу вниз}
procedure moveRow;
 var
   i, j: integer;
   T: real;
 begin
   for i := 1 to n do
     begin
       T := matrix[1, i];
       for j := 2 to n do
         matrix[j - 1, i] := matrix[j, i];
       matrix[n, i] := T;
     end;
 end;

{Процедура сдвигает матрицу влево}
procedure moveColumn;
 var
   i, j: integer;
   T: real;
 begin
   for i := 1 to m do
     begin
       T := matrix[i, 1];
       for j := 2 to m do
         matrix[i, j - 1] := matrix[i, j];
       matrix[i, m] := T;
     end;
 end;

begin
 writeln( 'Введите матрицу (построчно):' );
 for iRow := 1 to n do
   begin
   WriteLn( 'Строка #', iRow );
   for iColumn := 1 To m do
     begin
       write( 'matrix[', iRow, ',', iColumn, '] =' );
       readln(matrix[iRow, iColumn])
     End;
   writeln;
   end;

 {Находим максимальное значение в матрице ... }
 min := -maxValue;
 for iRow := 1 to n do
   for iColumn := 1 To m do
     if min < matrix[iRow, iColumn] then
       begin
         min := matrix[iRow, iColumn];
         { ... и запоминаем его позицию }
         count_row := iRow;
         count_col := iColumn
       end;

 { распечатываем исходную матрицу }
 for iRow := 1 to n do
   begin
   for iColumn := 1 To m do
     write( matrix[iRow, iColumn]:5:2 );
   writeln;
   end;

 WriteLn;

 { сдвигаем нужное число раз }
 {(Вниз)}
 for iRow := 1 to Pred(count_row) Do moveRow;
 {(Влево)}
 for iColumn := 1 to Pred(count_col) Do moveColumn;

 {распечатываем полученую матрицу }
 for iRow := 1 to n do
   begin
   for iColumn := 1 To m do
     write( matrix[iRow, iColumn]:5:2 );
   writeln;
   end;
end.

.
Тёмный Эльф
а ты ее протестируй..и узнаешь, удовлетворяет она условию задачи или нет.....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.