Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сдвиг массива в любую из сторон 
:(
    Опции темы
REZiaMIX
Дата 22.9.2013, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 3.11.2007

Репутация: нет
Всего: 4



Вроде бы простая задача, но никак не могу сделать оптимальный алгоритм:
Есть двухмерный(квадратный) массив. Нужно сдвинуть его значения на N позиций по данному сдвигу, например:
1,0 - на 1 вправо
1,1 - на 1 вправо и на 1 вниз
-1,-2 - на 1 влево и на 2 вверх

При этом нужно обработать убывшие и прибывшие элементы. Например сделать delete для убывших, и прибывшие заполнить = new ArrayElement();

Даже не знаю как такое отгуглить, везде только про сдвиг в одну сторону. И кажется мне, что эта задача имеет простое решение.


--------------------
user posted image
PM MAIL   Вверх
feodorv
Дата 22.9.2013, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(REZiaMIX @  22.9.2013,  21:44 Найти цитируемый пост)
везде только про сдвиг в одну сторону

Ну так делайте аналогично, но только учитывая направление сдвига. У Вас всего 4 варианта:
  • dx >= 0, dy >= 0: движение по матрице справа-налево и снизу-вверх
  • dx >= 0, dy < 0: движение по матрице справа-налево и сверху-вниз
  • dx < 0, dy >= 0: движение по матрице слева-направо и снизу-вверх
  • dx < 0, dy < 0: движение по матрице слева-направо и сверху-вниз



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0590 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.