Как перевернуть матрицу
Перейти к содержимому

Как перевернуть матрицу

Как перевернуть матрицу

БлогNot. С++: поворот матрицы

С++: поворот матрицы

Любопытная задача — не транспонировать, а именно повернуть на 90, 180 или 270 градусов матрицу.

Если результаты перестановки писать в новую матрицу, задач тривиальна. Достаточно иметь функцию вращения матрицы на 90 градусов (например, по часовой стрелке), вызываемую нужное число раз. В примере квадратная матрица «вращается» четырежды, возвращаясь, в итоге, «на место». Для неквадратной матрицы изменятся лишь границы циклов и выделение памяти.

Вывод этой программы:

Вращение матрицы «на месте» осуществить посложнее, но тоже возможно. В этом случае задача имеет смысл лишь для квадратной матрицы (иначе будет задача 1, с выделением памяти под новую матрицу — ведь часть элементов могут попасть «в никуда»).

Напишем пару функций для вращения матрицы по и против часовой стрелки на 90 градусов:

sergiykatriuk / Blinov2C7.java

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

package OOP_HW_L1 ;
import java . util . Arrays ;
import java . util . Random ;
import static java . util . Arrays .*;
/**
* Created by Sergiy Katriuk on 24.10.17.
* Повернуть матрицу на 90 (180, 270) градусов против часовой стрелки.
*/
public class Blinov2C7 <
public static void main ( String [] args ) <
int [][] arr = new int [ 3 ][ 5 ];
fillArray ( arr );
showArray ( arr );
System . out . println ();
showArray ( rotateLeft ( arr , 3 ));
>
public static int [][] fillArray ( int [][] arr ) <
Random rand = new Random ();
for ( int i = 0 ; i < arr . length ; i ++) <
for ( int j = 0 ; j < arr [ i ]. length ; j ++) <
arr [ i ][ j ]= rand . nextInt ( 100 );
>
>
return arr ;
>
public static void showArray ( int [][] arr ) <
for ( int i = 0 ; i < arr . length ; i ++) <
for ( int j = 0 ; j < arr [ i ]. length ; j ++) <
System . out . print ( arr [ i ][ j ] + "\t" );
>
System . out . println ();
>
>
public static int [][] rotateLeft ( int [][] arr , int x ) <
int [][] newarr = new int [ arr [ 0 ]. length ][ arr . length ];
x = x — ( x / 4 ) * 4 ;
if ( x != 0 ) <
for ( int j = 0 ; j < arr . length ; j ++) <
for ( int k = arr [ j ]. length — 1 ; 0 <= k ; k —) <
newarr [ arr [ j ]. length — k — 1 ][ j ] = arr [ j ][ k ];
>
>
x —;
> else newarr = arr ;
return ( x != 0 ? rotateLeft ( newarr , x ): newarr );
>
>

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Транспонирование матрицы в программе Microsoft Excel

Транспонирование матрицы в Microsoft Excel

При работе с матрицами иногда нужно их транспонировать, то есть, говоря простыми словами, перевернуть. Конечно, можно перебить данные вручную, но Эксель предлагает несколько способов сделать это проще и быстрее. Давайте разберем их подробно.

Процесс транспонирования

Транспонирование матрицы – это процесс смены столбцов и строк местами. В программе Excel имеется две возможности проведения транспонирования: используя функцию ТРАНСП и при помощи инструмента специальной вставки. Рассмотрим каждый из этих вариантов более подробно.

Способ 1: оператор ТРАНСП

Функция ТРАНСП относится к категории операторов «Ссылки и массивы». Особенностью является то, что у неё, как и у других функций, работающих с массивами, результатом выдачи является не содержимое ячейки, а целый массив данных. Синтаксис функции довольно простой и выглядит следующим образом:

То есть, единственным аргументом данного оператора является ссылка на массив, в нашем случае матрицу, который следует преобразовать.

Посмотрим, как эту функцию можно применить на примере с реальной матрицей.

    Выделяем незаполненную ячейку на листе, планируемую сделать крайней верхней левой ячейкой преобразованной матрицы. Далее жмем на значок «Вставить функцию», который расположен вблизи строки формул.

Переход в Мастер функций в Microsoft Excel

Переход к аргументам функции ТРАНСП в Microsoft Excel

Окно аргументов функции ТРАНСП в Microsoft Excel

Распространение действия функции ТРАНСП на весь диапазон в Microsoft Excel

Копирование в Microsoft Excel

Вставка в Microsoft Excel

Значения вставлены в Microsoft Excel

Способ 2: транспонирование матрицы с помощью специальной вставки

Кроме того, матрицу можно транспонировать с помощью одного элемента контекстного меню, который носит название «Специальная вставка».

    Выделяем исходную матрицу курсором, зажав левую кнопку мыши. Далее, перейдя во вкладку «Главная», щелкаем по пиктограмме «Копировать», размещенной в блоке настроек «Буфер обмена».

Копирование матрицы в Microsoft Excel

Вместо этого можно сделать и по-другому. Выделив область, кликаем по ней правой кнопкой мыши. Активируется контекстное меню, в котором следует выбрать пункт «Копировать».

Копирование матрицы через контекстное меню в Microsoft Excel

Переход в специальную вставку в Microsoft Excel

Специальная вставка в Microsoft Excel

Матрица транспонирована в Microsoft Excel

Удаление исходной матрицы в Microsoft Excel

После указанных действий на листе останется только преобразованная матрица.

На листе одна матрица в Microsoft Excel

Этими же двумя способами, о которых шла речь выше, можно транспонировать в Excel не только матрицы, но и полноценные таблицы. Процедура при этом будет практически идентичной.

Итак, мы выяснили, что в программе Excel матрицу можно транспонировать, то есть, перевернуть, поменяв столбцы и строчки местами, двумя способами. Первый вариант предполагает использование функции ТРАНСП, а второй – инструменты специальной вставки. По большому счету конечный результат, который получается при использовании обоих этих способов, ничем не отличается. Оба метода работают практически в любой ситуации. Так что при выборе варианта преобразования, на первый план выходят личные предпочтения конкретного пользователя. То есть, какой из данных способов для вас лично удобнее, тот и используйте.

ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *