|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.01.2009, 21:39 | #1 |
Пользователь
Регистрация: 10.01.2009
Сообщений: 71
|
КАК повернуть матрицу на 90 градусов вправо (или влево).
Уважаемые программисты!
В задаче дана квадратная матрица порядка M, повернуть её на 90 градусов вправо или влево , когда элемент а[1][1] переходит в а[1][m], a[m][1] в a[1][1] и т.д. Вспомогательную матрицу не использовать. Кто сможет, помогите! Последний раз редактировалось RomT24; 10.01.2009 в 22:09. |
10.01.2009, 23:10 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ищите. я здесь на форуме писал такой код по повороту матрицы.
|
11.01.2009, 00:56 | #3 |
Пользователь
Регистрация: 27.10.2008
Сообщений: 38
|
поворот вправо))
Код:
|
11.01.2009, 13:15 | #4 |
Пользователь
Регистрация: 10.01.2009
Сообщений: 71
|
Спасибо, но мне бы ещё комментарии к основным циклам, а то своими мозгами что то дойти не могу...)
|
11.01.2009, 13:56 | #5 |
Пользователь
Регистрация: 10.01.2009
Сообщений: 71
|
И , как я понял, в этом решении используется вспомогательная матрица, а по условию это делать нельзя. Может, у кого есть другие мысли?
|
11.01.2009, 18:21 | #6 |
Пользователь
Регистрация: 27.10.2008
Сообщений: 38
|
Мои извинения, не до конца прочитал условие!!!
|
11.01.2009, 18:41 | #7 |
Пользователь
Регистрация: 10.01.2009
Сообщений: 71
|
Не сможешь помочь тогда? (
|
11.01.2009, 21:52 | #8 |
Пользователь
Регистрация: 09.04.2008
Сообщений: 10
|
Можно использовать одну матрицу, просто записать вводимые данные не в a[i,j], а в a[i+n,j+n], и потом их оттуда забрать в a[j,i]. Или это будет считаться за вспомогательную матрицу??
|
12.01.2009, 11:31 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
RomT24,
сейчас некогда написать реализацию. Идею решения хотите? для матрицы размером n (в примере n=4) поворот на 90 градусов по часовой. идём по главной диагонали. берём A[1,1] копируем его в A[1,n], элемент, который там был -> A[n,1], тот, в свою очередь в -> A[1,1] дальше идём по строке от элемента главной диагонали до N-1 элемента по строке A[2,1] -> A[2,n] -> A[n,n-1] -> A[2,1] A[3,1] -> A[3,n] -> A[n,n-2] -> A[3,1] всё. дошли до конца первой строки... берём следующий элемент главной диагонали: A[2,2] и крутим по кругу его.. и т.д. Так понятно? |
12.01.2009, 12:57 | #10 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Реализация идеи Serge_Bliznykov.
Проверил при разных n - вроде работает. Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как повернуть изображение на 180 градусов? | kl45gp | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 11.05.2013 13:10 |
Повернуть двумерный массив на 180 градусов - задача на Pascal'е | Sanakan | Помощь студентам | 7 | 15.12.2008 00:16 |
Прога по переводу градусов | ELL | Помощь студентам | 8 | 04.07.2008 23:02 |
Нарисовать,стереть,повернуть,отразить в паскале! | Барби | Помощь студентам | 2 | 23.04.2008 00:24 |
Циклическо сдвинуть элементы массива на K позиций влево, тоже сделать, испульзуя динамические массивы | Fimogen | Общие вопросы C/C++ | 10 | 03.11.2007 11:19 |