Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите, пожалуйста, решить матрицу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Альберт
Привет народ помогите, пожалуйста, решить задачу.
Нужно преобразовать матрицу, осуществив поворот элементов
вокруг его центра на 90 гр. против часовой стрелки.
                             1 2 3              3 3 3
Была матрица:     1 2 3  стала:  2 2 2
                             1 2 3              1 1 1
Мыльте кому не трудно на albert01@nyagan.wsnet.ru
Спасибо.
fms
чего то не совсем понятно.. ((
trminator
Дополнительный массив можно использовать? а то без него лениво...
Код

const n = 3;
var a, b : array[1..n, 1..n] of byte;
   i, j : integer;
begin
{ввод матрицы}
  writeln('input your matrix ', n, ' x ', n);
  for i:=1 to n do for j:=1 to n do read(a[i,j]);

{переворот}
  for i:=1 to n do
      for j:=1 to n do b[j,i]:=a[i,j];

{вывод матрицы}
  for i:=1 to n do begin
    for j:=1 to n do write(B[i,j],' ');
    writeln
  end;
end.
APAL
Цитата
Дополнительный массив можно использовать? а то без него лениво...


Этот вариант не правильный. Он поворачивают матрицу на 180 гр., а надо на 90....
GLuk
2APAL: ДЫк, представил бы правильный вариант и вообще от тебя решений в последнее, да и в первое время: по-минимуму, а все-таки модер...
Конечно копаться в чужих легче, чем делать свои.
APAL
Я над этой задачей уже думаю... Нашел немного материала в сети и не все так легко как кажется.
trminator
APAL писАл: "этот вариант неправильный. Он поворачивают матрицу на 180 гр., а надо на 90.... "

Да он по ходу ее вообще транспонирует... ладно, сейчас исправим...
trminator
Код

const n = 3;
var a, b : array[1..n, 1..n] of byte;
   i, j : integer;
begin
{ввод матрицы}
  writeln('input your matrix ', n, ' x ', n);
  for i:=1 to n do for j:=1 to n do read(a[i,j]);

{переворот}
  for i:=1 to n do
    for j:=1 to n do b[n-j+1,i]:=a[i,j];

{вывод матрицы}
  writeLn;
  for i:=1 to n do begin
    for j:=1 to n do write(B[i,j],' ');
    writeln
  end;
end.


Вроде так...
Тесты:
input your matrix 5 x 5
1 2 3 4 5
3 1 4 1 5
9 2 6 5 3
5 8 9 7 9
3 2 3 8 4

5 5 3 9 4
4 1 5 7 8
3 4 6 9 3
2 1 2 8 2
1 3 9 5 3
input your matrix 3 x 3
1 2 3
4 5 6
7 8 9

3 6 9
2 5 8
1 4 7

Оно? smile.gif
fms
хе. теперь понятно.. smile.gif а то примеры странные написаны..))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.