Помогите пожалуйста с этой задачей если возможно сегодня(завтра у меня ПРЗ), в массивах не шарю совсем!
Дана матрица размером n X m. Переставляя её строки и столбцы,добиться того,чтобы наибольший элемент(или один из них) оказался в верхнем левом углу.
klem4
19.02.2007 20:58
Находишь наибольший элемент матрицы, запоминаешь его координаты (строку столбец), далее например сначала сдвигаешь столбец влево пока он не будет первым, потом поднимаешь строку вверх пока он не будет стоять под номером 1, как поменять местами строки/столбцы - в поиск, либо: Как задать матрицу, чтобы ...
MAD-GTX
19.02.2007 21:02
Спасибо большое за ответ,но это для меня как китайская грамота:( . Возможно ли это представить в виде текста программы на Паскале?
volvo
19.02.2007 21:20
Возможно... Даже больше - уже выкладывалось. Искать по ключевым словам "перемещение, операция, максимальный"
Спасибо за линк!Прочитал,но меня терзают смутные сомненья! Если не трудно,ответьте удовлетворяет ли данный текст программы моей задаче?
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.
.
Тёмный Эльф
24.02.2007 1:18
а ты ее протестируй..и узнаешь, удовлетворяет она условию задачи или нет.....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.