| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C++] Заполнение матрицы по спирали |
| Автор: DasBit 3.1.2010, 20:22 | ||
| Люди помогите пожалуйста Вот мой код:
Все...дальше ступор |
| Автор: zim22 3.1.2010, 20:36 |
мне просто интересно, где в матрице 4на4 центр? в какой точке? |
| Автор: kemiisto 3.1.2010, 20:45 |
| Автор: DasBit 3.1.2010, 21:36 |
| Имееться в виду любая точка из центрального квадрата: [1,1];[1,2];[2,1];[2,2]; Я пытался разобраться в задаче, взяв за стартовую точку [2,1] В тетради все расписал как координата изменяеться, но так и не смог найти никакой закономерности :( |
| Автор: zim22 3.1.2010, 21:38 |
| как по мне - эта задача красиво решается с помощью рекурсии. начиная с левого верхнего угла квадрата мы строим спираль по часовой стрелке. в конце концов спираль "закрутится" и в момент закручивания как раз пойдут обратные вызовы рекурсивной функции, которая и будет заполнять квадратики числами. |
| Автор: DasBit 3.1.2010, 21:42 |
| Мы к сожалению рекурсию еще не учили. Но мне препод подсказал, что задача состоит из двух циклов, и большого количества условий |
| Автор: zim22 3.1.2010, 21:46 |
ну так прояви смекалку. выучи её. и препод похвалит, и перед однокурсниками похвастаешься. ещё вариант "рекурсии без рекурсии" алгоритм тот же самый, только на каждом шагу ты в дополнительный массив индекс текущего "обходного" элемента записываешь. когда подошёл к самому последнему(закрученному) элементу - занеси его значение тоже в массив. и после этого цикл по этому дополнительному массиву в обратном порядке. и каждому элементу значение нужное тебе присваиваешь. |
| Автор: DasBit 3.1.2010, 21:56 | ||
Извените, мож я немного торможу, но я толком ничего не понял из того что вы мне сказали. Можно кратенький разьяснительный код ? Добавлено через 3 минуты и 39 секунд И еще препод сказал, что в этой задачке есть какая то закономерность, найдя ее задача очень легко решаеться, но я сколько не смотрел, закономерность нашел только одну: Сумма координатных точек идет попеременно четное, нечетное число. Но логики честно говоря я в этом никакой не вижу :( |
| Автор: zim22 3.1.2010, 22:02 |
| ты должен придумать алгоритм, которые будет обходить элементы массива по спирали в итоге он должен в таком порядке обойти все элементы: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 и на каждом шаге обхода - ты записываешь индекс матрицы текущего обходного элемента во вспомогательный массив. после того, как ты дойдёшь до 16 элемента - берёшь и считываешь в обратном порядке элементы из вспомогательного массива. эти элементы - это индексы для заполнения: начиная с центра спирали. |
| Автор: DasBit 3.1.2010, 22:08 |
| Спасибо большое |
| Автор: DasBit 5.1.2010, 15:15 | ||
Я сделал кое какие наброски программы, но препод сказал, что почти правильно. Вместо циклов это все нужно делать через if'ы. Плдскажите плз как, я не пойму
cout'ы с выводом сообщения делал для того чтобы просто проследить правильность передвижения по матрице |
| Автор: zim22 5.1.2010, 16:13 |
задавай свои вопросы в "http://forum.vingrad.ru/forum/forum-471.html". там тебе быстрей ответят. в Центр Помощи пишут халявщики, которые хотят чтобы за них всё сделали. |
| Автор: DasBit 5.1.2010, 16:33 |
| Ну даделайте тогда просто эту задачку, если вам не сложно |
| Автор: DasBit 5.1.2010, 18:16 |
| Только пожалуйста побольше комментариев, чтобы я смог в коде нормально разобраться |
| Автор: DasBit 5.1.2010, 23:30 |
| Оу пасиб ! В коде разобрался |