MrMurder / MatrixRotation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| public class MatrixRotation |
| static void createMatrix(int[][] a) |
| for (int i = 0; i < a.length; i++) |
| for (int j = 0; j < a.length; j++) |
| System.out.print(a[i][j] + » «); |
| > |
| System.out.println(); |
| > |
| System.out.println(); |
| > |
| static void rotateM270(int[][] a) |
| int[][] b = new int[a.length][a.length]; |
| for (int i = 0; i < b.length; i++) |
| for (int j = 0; j < b.length; j++) |
| b[i][j] = a[j][a.length — i — 1]; |
| > |
| > |
| System.out.println(«Rotating by 270 degree»); |
| createMatrix(b); |
| > |
| static void rotateM90(int[][] a) |
| int[][] b = new int[a.length][a.length]; |
| for (int i = 0; i < b.length; i++) |
| for (int j = 0; j < b.length; j++) |
| b[j][i] = a[a.length — i — 1][j]; |
| > |
| > |
| System.out.println(«This matrix is rotated by 90 degree:»); |
| createMatrix(b); |
| > |
| static void rotateM180(int[][] a) |
| int[][] b = new int[a.length][a.length]; |
| for (int i = 0; i < b.length; i++) |
| for (int j = 0; j < b.length; j++) |
| b[j][i] = a[a.length — j — 1][a.length — i — 1]; |
| > |
| > |
| System.out.println(«This matrix is rotated by 180 degree:»); |
| createMatrix(b); |
| > |
| public static void main(String[] args) |
| int[][] a = , , >; |
| System.out.println(«Original matrix:»); |
| createMatrix(a); |
| rotateM270(a); |
| rotateM90(a); |
| rotateM180(a); |
| > |
| > |
Как повернуть матрицу на 180 градусов и 270 против часовой стрелки?
Написал метод поворота двумерной матрицы на 90 градусов против часовой стрелки.
private static int SIZE = 8; private static int[][] colors = new int[SIZE][SIZE]; public static void reverseMatrix90() < int[][] rotatedMatrix = new int[colors.length][colors.length]; for (int i = 0; i < colors.length; i++) < for (int j = 0; j < colors.length; j++) < rotatedMatrix[i][j] = colors[colors.length - j - 1][i]; >> colors = rotatedMatrix; >
Как написать аналогичный метод reverseMatrix180() и reverseMatrix270() .
Отслеживать
задан 1 мар 2021 в 7:08
Yura Kopshev Yura Kopshev
81 7 7 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Если функция поворота на 90 корректна — то:
-
переделать эту функцию, чтобы принимала на себя матрицу и возвращала её
public static int[][] reverseMatrix90(int[][] matrix)
return reverseMatrix90(reverseMatrix90(colors));
return reverseMatrix90(reverseMatrix90(reverseMatrix90(colors)));
или вызвать функцию reverseMatrix180 и reverseMatrix90
return reverseMatrix180(reverseMatrix90(colors));
Поворот матрицы на 90 градусов по часовой стрелке
Поворот матрицы на 90 градусов по часовой стрелке
import numpy as np n = int(input(‘Количество строк = ‘)) m = int(input(‘Количество столбцов = ‘)).
Поворот матрицы на 90 градусов по часовой стрелке
Поскольку в стандартной библиотеке Python подобная функция отсутствует, надо создать собственную.
Поворот матрицы на 90 градусов по часовой стрелке
Непонятно как не транспонировать, а именно повернуть на 90 Дан массив N × M. Требуется.
Поворот матрицы на 180 градусов по часовой стрелке
Нужна программа,которая повернет квадратную матрицу из N строк и N столбцов на 180 по часовой.
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
Алгоритм на с++, можно адаптировать под нужный язык
http://www.geeksforgeeks.org/i. 0-degrees/
2495 / 1944 / 486
Регистрация: 17.02.2014
Сообщений: 9,239
Регистрация: 09.03.2017
Сообщений: 57
То что вы мне прислали,слишком мудрено для новичка, конструкторы и прочее, мне не надо. Мне надо понять как объявить вот этот массив int[][] tempArray = new int[][]; чтобы адекватно работало такое выражение tempArray[i][j] = rotateArray[j][i];
2495 / 1944 / 486
Регистрация: 17.02.2014
Сообщений: 9,239
Сообщение от lopatuxin 
конструкторы и прочее, мне не надо.
Да вы шутник, однако
Добавлено через 42 минуты
Вот это, для вас самое то
1 2 3 4 5 6 7 8 9 10 11 12
public int [][] getRotateArr(int [][] sourceArr) { int [][] retArr = new int[sourceArr[0].length][sourceArr.length]; int retArrI = 0; int retArrJ = sourceArr.length - 1; for (int [] srI : sourceArr){ for (int srJ : srI) retArr[retArrI++][retArrJ] = srJ; retArrI = 0; retArrJ--; } return retArr; }
Регистрация: 17.03.2019
Сообщений: 1
Для квадратного массива:
1 2 3 4 5 6 7 8 9 10
public int[][] rotateClockwise(int[][] mas) { int SIDE = mas.length; int[][] rezult = new int [SIDE][SIDE]; for (int i = 0; i SIDE; i++) { for (int j = 0; j SIDE; j++) { rezult[i][j] = mas[SIDE - j - 1][i]; } return rezult; }
Пришлось поломать голову но вышел самое лаконичное, на мой взгляд, решение.
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
public class TurnArray { /** * The method for turn double array on 90 degrees to right. * * @param array - array for work; * @return turn array; */ public int[][] turnToRight(int[][] array) { int[][] resultArray = new int[array[0].length][array.length]; for (int i = 0; i array.length; i++) { for (int j = 0; j array[i].length; j++) { resultArray[j][array.length - i - 1] = array[i][j]; } } return resultArray; } /** * The method for turn double array on 90 degrees to left. * * @param array - array for work; * @return turn array; */ public int[][] turnToLeft(int[][] array) { int[][] resultArray = new int[array[0].length][array.length]; for (int i = 0; i array.length; i++) { for (int j = 0; j array[i].length; j++) { resultArray[array[i].length - j - 1][i] = array[i][j]; } } return resultArray; } }
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Поворот на 90 градусов по часовой стрелке
Всем привет. Народ, очень нужна ваша помощь, срочно. Очень срочно. Ситуация такая: есть код.
Поворот массива на 90 градусов по часовой стрелке
Всем привет! Помогите найти ошибку, программа должна поворачивать целочисленный массив на 90.

Поворот массива на 90 градусов по часовой стрелке C
Здравствуйте, тут такая проблема, выходит неправильный результат, когда массив (n*n) больше 5 и тд.
Поворот двухмерного массива на 90 градусов по часовой стрелке
using System; using System.Collections.Generic; using System.Linq; using System.Text; using.
Как можно повернуть матрицу на 90 градусов на java? Написал только ввод матрицы с клавиатуры, а дальше не понимаю.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class dima public static void main (String[]args) throws NumberFormatException, IOException
BufferedReader matr = new BufferedReader(new InputStreamReader(System.in));
System.out.println(«Введите размереность матрицы»);
System.out.println(«Количество строк матрицы»);
int a;
a = Integer.parseInt(matr.readLine())+1;
System.out.println();
System.out.println(«Количество столбцов матрицы»);
int b;
b = Integer.parseInt(matr.readLine())+1;
System.out.print(«Введите поэлементно матрицу»);
int i,j;
int[][]mas=new int[a][b];
for (i=1;i >
>
System.out.println(«Исходная матрица»);
for (i=1;i >
System.out.println();
>
>
>
Голосование за лучший ответ
а сам написал или кто помог? если сам то подсказка в духе mas[i][j]=mas[j][i] поможет. если не сам то не поможет ничего
Дмитро МаксимчукУченик (214) 5 лет назад
Пробовал так сделать, но оно выводит не так, как надо
mchep Мудрец (13437) ну подумай уже сам наконец, что происходит с индексами когда она поворачивается на 90 градусов? напиши две матрицы на листочке. одну норм и одну с поворотом. у каждой ячейки индексы подпиши. посмотри как они изменились. так же и меняй в проге
блин есть же сугубо математические способы матрицу поворачивать на все 360 без всякого программирования или я плохо помню вышку?
mchepМудрец (13437) 5 лет назад
плохо, на 360 её если повернуть то поворачивать не надо вообще)) а так конечно были вроде, они как раз и сводятся к игре с индексами, парню просто лениво с ними играться
Robin Zone Гуру (4559) ну, про 360, это я так пошутнул)
Самое простое — это из старого массива mas размера a x b всё скопировать в новый массив mas1 размера b x a по слегка изменённым индексам. Например, вот поворот по часовой стрелке:
for (int i = 0; i < a; i++) for (int j = 0; j < b; j++) mas1[j][a - i - 1] = mas[i][j];
>
>
