Показать сообщение отдельно

  #8  
Старый 13.11.2009, 23:49
Mozy
Познающий
Регистрация: 15.03.2009
Сообщений: 77
Провел на форуме:
984248

Репутация: 73
Отправить сообщение для Mozy с помощью ICQ
Arrow

Итак
шаблон функции я реализовал
Код:
#include <vector>
#include <algorithm>


enum Direction//перечисление сторон
{
Right = 0,
Left,
Up,
Down
};

template <typename T>
inline void shlrud(T **array, int size, int step, Direction dir)
{
vector<T> _v;//объявление вектора
for (int i =0; i < size; i++)
{
    int j;
    _v.clear();//очищаем вектор
    for (j = 0; j < size; j++)
    {
        switch (dir)
        {
            case Right:
            case Left:
            _v.push_back(array[i][j]);//забиваем в вектор строчку массива
            break;
            case Down:
            case Up:
            _v.push_back(array[j][i]);//забиваем в вектор строчку массива
            break;
        }
    }
        switch (dir)
        {
            case Right:
            case Down:
            rotate(_v.begin(),//делаем циклический сдвиг 
                _v.end()-step,//методом разворотов
                _v.end());
			break;
            case Left:
            case Up:
            rotate(_v.begin(),//делаем циклический сдвиг 
                _v.begin()+step,//методом разворотов
                _v.end());
			break;
        }
    for (j = 0; j < size; j++)
    {
        switch (dir)
        {
            case Right:
            case Left:
            array[i][j] = _v[j];//возвращаем обработанную строчку в массив
            break;
            case Down:
            case Up:
            array[j][i] = _v[j];//возвращаем обработанную строчку в массив
            break;
        }
    }
}

}

Пользуйтесь на здоровье


Но проблема в другом:
Оказывается надо было написать без использования STL.

Последний раз редактировалось Mozy; 17.11.2009 в 23:52..
 
Ответить с цитированием