Другие языки программирования и технологии

C++ повернуть матрицу на 90 градусов в положительном направлении

программу не требую, просто подскажите алгоритм, пожалуйста
// Wait_tomorrow_2011-11-26
#include <iostream>
#include <ctime>
using namespace std;
#define N 3
#define M 5

void main()
{
srand((unsigned) time(NULL));

int a[N][M], b[N][M];

for (int n = 0; n < N; n++, cout << endl)
for (int m = 0; m < M; m++)
{
a[n][m] = 10 + rand() % 90;
cout << ' ' << a[n][m];
}

cout << "---------------" << endl;

for (int m = 0; m < M; m++, cout << endl)
for (int n = N - 1; n >= 0; n--)
{
b[n][m] = a[n][m];
cout << ' ' << b[n][m];
}

fflush(stdin);
cin.get();
}
ГА
Гриша Абрамов
70 122
Лучший ответ
"Положительное" - это по часовой? Создаешь новую матрицу и перебрасываешь в нее в цикле элементы, i,j-й исходной матрицы на (m-j),i-е место.
Ринат Харисов
Ринат Харисов
69 937
Массив m размером NxN

#define C (N-1)

for (ii = 0; ii < (N / 2 + N % 2); ii++) {
for (jj = 0; jj < N / 2; jj++) {
int tmp = m[ii][jj];
m[ii][jj] = m[C - jj][ii];
m[C - jj][ii] = m[C - ii][C - jj];
m[C - ii][C - jj] = m[jj][C - ii];
m[jj][C - ii] = tmp;
}
}
Артем Лунин
Артем Лунин
59 738
запустить 2 цикла по столбцам матрицы.
Писать их в новую матрицу по строкам с инвертированием