Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как можно повернуть матрицу на 90 градусов на java? Написал только ввод матрицы с клавиатуры, а дальше не понимаю...

Дмитро Максимчук Ученик (214), на голосовании 6 лет назад
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<a;i++){
for (j=1;j<b;j++){
mas[i][j]=Integer.parseInt(matr.readLine());
}
}
System.out.println("Исходная матрица");
for (i=1;i<a;i++){
for (j=1;j<b;j++){
System.out.print(Integer.toString(mas[i][j])+"\t");
}
System.out.println();
}
}
}
Голосование за лучший ответ
mchep Мудрец (13450) 6 лет назад
а сам написал или кто помог? если сам то подсказка в духе mas[i][j]=mas[j][i] поможет. если не сам то не поможет ничего
Дмитро МаксимчукУченик (214) 6 лет назад
Пробовал так сделать, но оно выводит не так, как надо
mchep Мудрец (13450) ну подумай уже сам наконец, что происходит с индексами когда она поворачивается на 90 градусов? напиши две матрицы на листочке. одну норм и одну с поворотом. у каждой ячейки индексы подпиши. посмотри как они изменились. так же и меняй в проге
Robin Zone Гуру (4569) 6 лет назад
блин есть же сугубо математические способы матрицу поворачивать на все 360 без всякого программирования или я плохо помню вышку?
mchepМудрец (13450) 6 лет назад
плохо, на 360 её если повернуть то поворачивать не надо вообще)) а так конечно были вроде, они как раз и сводятся к игре с индексами, парню просто лениво с ними играться
Robin Zone Гуру (4569) ну, про 360, это я так пошутнул)
Dmitry Просветленный (23070) 6 лет назад
Самое простое - это из старого массива 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];
}
}
Похожие вопросы