Помощь - Поиск - Пользователи - Календарь
Полная версия: Очень сложная задача на двухмерный массив (или матрицу?)
Форум «Всё о Паскале» > 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.

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