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

Поворот массива на 90 градусов в с++

есть некоторая квадратная матрица а, в который первый элемент главной диагонали имеет индексы i1 (строка) и j1 (столбец) , а последний - i2 и j2. нужно повернуть эту матрицу, можно с использованием дополнительной памяти, на 90 градусов по часовой стрелке. заранее благодарю
> первый элемент главной диагонали имеет индексы i1 (строка) и j1 (столбец) , а последний - i2 и j2
Написана какая-то хрень не имеющая отношения к вопросу о повороте и, скорее всего, к С++ вообще.

Повернуть можно так:

#include <iostream>
#include <iomanip>

using namespace std;

#define n 5

int main() {
    int a[n][n];

    for (int c = 0; c < n * n; ++c) *(&a[0][0] + c) = c;

    for (int r = 0; r < n; ++r) {
        for (int c = 0; c < n; ++c) cout << setw(3) << a[r][c];
        cout << endl;
    }

    for (int r = 0; r < n / 2; ++r) {
        for (int c = 0; c < (n + 1) / 2; c++) {
            int tmp = a[r][c];
            a[r][c] = a[n - 1 -c][r];
            a[n - 1 - c][r] = a[n - 1 - r][n - 1 - c];
            a[n - 1 - r][n - 1 - c] = a[c][n - 1 - r];
            a[c][n - 1 - r] = tmp;
        }
    }

    cout << endl;
    for (int r = 0; r < n; ++r) {
        for (int c = 0; c < n; ++c) cout << setw(3) << a[r][c];
        cout << endl;
    }

    return 0;
}
Рустам Нуриллаев
Рустам Нуриллаев
66 528
Лучший ответ