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

В этой статье мы с вами поговорим о матрицах, а именно о транспонировании матриц. Что такое матрица? Матрица - это двумерный массив. Итак, какая же матрица называется транспонированной? Транспонированная матрица - это матрица, полученная из исходной путем замены строк на столбцы. Например,

или вот так

Цель понятна, можно приступать к программированию. Я реализовал транспонирование матриц двумя способами. Первый способ позволяет получить транспонированную матрицу в той же матрице (в той же области памяти), не объявляя новой. Здесь я использую переменную для временного хранения значения матрицы temp. Путем циклического прохода по ячейкам матрицы мы переписываем ее строки в столбцы. Второй способ несколько проще, но требует наличия второй матрицы, в столбцы которой будут перепысываться строки из исходной матрицы. Оба способа реализованы в одной программе:

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

#include <iostream>
#include <iomanip.h>

using namespace std;

//объявляем глобальные переменные,
//определяющие размер матрицы
const int size1 = 5;
const int size2 = 5;

//прототип функции для вывода матрицы на экран
void print(int [][size2]);

int main()
{
    //объявляем и определяем исходную матрицу
    int array[size1][size2] = {{ 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}};
    int temp;
    //выводим на экран исходную матрицу
    cout << "Ishodnaya matrica: " << endl << endl;
    print(array);

    cout << endl;
    //транспонируем первым способом
    for(int i = 0; i < size1; i++)
    {
        for(int j = i; j < size2; j++)
        {
            temp = array[i][j];
            array[i][j] = array[j][i];
            array[j][i] = temp;
        }
    }

    //выводим на экран транспонированную матрицу
    cout << "Transponirovannaya matrica: " << endl << endl;
    print(array);

    cout << endl;
    //транспонируем вторым способом
    //объявляем новую матрицу
    int transpArray[size1][size2];

    for(int i = 0; i < size1; i++)
        for(int j = 0; j < size2; j++)
            transpArray[j][i] = array[i][j];

     //выводим на экран транспонированную матрицу
     cout << "Transponirovannaya matrica: " << endl << endl;
     print(transpArray);
     cout << endl;
}

//функция, для вывода матрицы на экран
void print (int array[][size2])
{
    for(int i = 0; i < size1; i++)
    {
        for(int j = 0; j < size2; j++)
        {
            cout << setw(2) <<
            array[i][j] << " ";
        }
        cout << endl << endl;
    }
}

Вот что выдает запущенная программа

транспонирование матриц, программа для транспонирования