Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите, пожалуйста, решить матрицу

Автор: Альберт 26.11.2003 3:06

Привет народ помогите, пожалуйста, решить задачу.
Нужно преобразовать матрицу, осуществив поворот элементов
вокруг его центра на 90 гр. против часовой стрелки.
                             1 2 3              3 3 3
Была матрица:     1 2 3  стала:  2 2 2
                             1 2 3              1 1 1
Мыльте кому не трудно на albert01@nyagan.wsnet.ru
Спасибо.

Автор: fms 28.11.2003 15:00

чего то не совсем понятно.. ((

Автор: trminator 28.11.2003 15:13

Дополнительный массив можно использовать? а то без него лениво...

Код

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 28.11.2003 17:20

Цитата
Дополнительный массив можно использовать? а то без него лениво...


Этот вариант не правильный. Он поворачивают матрицу на 180 гр., а надо на 90....

Автор: GLuk 28.11.2003 17:55

2APAL: ДЫк, представил бы правильный вариант и вообще от тебя решений в последнее, да и в первое время: по-минимуму, а все-таки модер...
Конечно копаться в чужих легче, чем делать свои.

Автор: APAL 28.11.2003 19:35

Я над этой задачей уже думаю... Нашел немного материала в сети и не все так легко как кажется.

Автор: trminator 28.11.2003 23:59

APAL писАл: "этот вариант неправильный. Он поворачивают матрицу на 180 гр., а надо на 90.... "

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

Автор: trminator 29.11.2003 0:13

Код

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 29.11.2003 0:49

хе. теперь понятно.. smile.gif а то примеры странные написаны..))