#include <locale>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;
// Ф-я для вывода матриц
template<class _Ty,size_t _Rows,size_t _Cols>
void printMatrix(const char* const message,const _Ty (&matrix)[_Rows][_Cols])
{
cout<<message<<endl;
for(size_t i=0;i<_Rows;++i)
{
for(size_t j=0;j<_Cols;++j)
{
cout<<setw(4)<<matrix[i][j]<<' ';
}
cout<<endl;
}
}
// Ф-я для транспонирования матриц
template<class _Ty,size_t _Rows,size_t _Cols>
void transposeMatrix(const _Ty (&srcMatrix)[_Rows][_Cols],_Ty (&dstMatrix)[_Cols][_Rows])
{
if(reinterpret_cast<const void*>(srcMatrix)==reinterpret_cast<const void*>(dstMatrix))
{
for(size_t i=1;i<_Rows;++i)
{
for(size_t j=0;j<i;++j)
{
swap(dstMatrix[i][j],dstMatrix[j][i]);
}
}
}
else
{
for(size_t i=0;i<_Rows;++i)
{
for(size_t j=0;j<_Cols;++j)
{
dstMatrix[j][i]=srcMatrix[i][j];
}
}
}
}
int main()
{
locale::global(locale(""));
srand(static_cast<unsigned int>(time(0)));
// Размерность матрицы
const size_t ROWS=4,COLS=5;
// Исходная и транспонированная матрицы
int matrix[ROWS][COLS],matrixT[COLS][ROWS];
// Заполним матрицу случайными числами
for(size_t i=0;i<ROWS;++i)
{
for(size_t j=0;j<COLS;++j)
{
matrix[i][j]=rand()%50;
}
}
// Распечатаем матрицу
printMatrix("Исходная матрица:",matrix);
// Транспонируем
transposeMatrix(matrix,matrixT);
// Распечатаем транспонированную
printMatrix("Транспонированная матрица:",matrixT);
system("PAUSE");
return 0;
}
Исходная матрица:
1 9 39 24 46
4 23 44 8 1
24 4 25 28 48
24 40 26 28 16
Транспонированная матрица:
1 4 24 24
9 23 4 40
39 44 25 26
24 8 28 28
46 1 48 16
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.