C++. Как можно транспонировать матрицу NxM из одномерного массива?
Вот сам код программы. Задача была вывести из одномерного массива длинной в 30 символов матрицу, выводящуюся на экран в виде "змейки", финальный результат транспонировать и поставить 2 матрицы друг на против друга. Не знаю как сделать последний пункт. Как в данном случае сделать транспонирование? ! Заранее спасибо=)
"#include "stdafx.h"
#include
#include
const int Length = 30;
int main()
{
int m = 5;
int n = 6;
int targetArray[Length];
int i = 0;
int j = 0;
int k;
int mA = 0, mB = 0, mC = 0, mD = 0; // отступы
// процесс заполнения массива
if(m * n != Length)
{
printf("Error! \n");
return 1;
}
printf("\n");
k = 0;
while(k < Length)
{
//цикл вправо
for(i = mD; i < n - mB; i++, k++)
{
targetArray[j * n + i] = k;
}
mA++;
i--;
if(k >= Length) break;
//Цикл Вниз
for(j = mA; j < m - mC ; j++, k++)
{
targetArray[j * n + i] = k;
}
j--;
mB++;
if(k >= Length) break;
//цикл влево
for(i = n - mB - 1; i >= mD; i--, k++)
{
targetArray[j * n + i] = k;
}
i++;
mC++;
if(k >= Length) break;
//Цикл Вверх
for(j = m - mC - 1; j >= mA; j--, k++)
{
targetArray[j * n + i] = k;
}
j++;
mD++;
}
//вывод массива в виде матрицы
for(j = 0; j < m; j++)
{
for(i = 0; i < n; i++)
{
printf(" %d \t", targetArray[j * n + i]);
}
printf("\n\n");
}
scanf_s("\n");
return 0;
}
"