Показать сообщение отдельно
иксуй!
Аватар для иксуй!
Сообщения: 9,556
Регистрация: 23.11.2007
Старый пост, нажмите что бы добавить к себе блог 7 мая 2011, 00:16
  #1250 (ПС)
-Цитата от Ридл Гатофель Посмотреть сообщение
-Цитата от иксуй! Посмотреть сообщение
-Цитата от Трэй Посмотреть сообщение
дана квадратная матрица.повернуть матрицу на 90 градусов по часовой стрелке

помогите, пожалуйста, хотя бы с алгоритмом.программу уж сам напишу

Мои размышления
1.через div 2 найти до какой строки делать цикл
2.начать перемещать строки и столбцы
верхнюю строку ставить на место последнего столбца, а нижнюю строку на место первого столбца.потом внутри тоже самое

есть ли вариант легче?
Чисто из любопытства сделал сейчас, одномерного массива хватило для решения за квадрат.

Код:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <string.h>
#include <math.h>
#include <conio.h>
#include <vector>
#include <map>
#include <set>

using namespace std;


int main()
{
      //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);

    int n,nn;

    scanf("%d",&n);

    nn=n*n;

    const unsigned int size=nn;

    int matrix[size];

    for(int i=1;i<=nn;i++)
    {
        scanf("%d",&matrix[i]);
    }

    for(int curr=n;curr>0;curr--)
    {
        for(int j=curr;j<=nn;j+=n)
        {
            printf("%d ",matrix[nn-j+1]);
        }
        putchar('\n');
    }

    return 0;
}
Чё-то я нихуя не понял
выводим снизу вверх сперва первый столбец исходной матрицы, затем второй столбец, затем третий и так до n-го столбца.

вот у нас матрица есть:

1 2 3
4 5 6
7 8 9

последний элемент в ней с номером N^2;
а нам нужно выводить первый элемент каждой строки сперва, затем второй элемент каждой строки и т.д.
чтобы вывести первый элемент последней строки нужно из N^2 вычесть длину строки/столбца матрицы + 1. затем удвоенную длину строки, затем утроенную...
после того как первая строка сформировалась длина исходной фактически уменьшилась на 1, так как первый столбик больше не нужен. и так далее.

offline
Ответить с цитированием