|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.06.2010, 21:02 | #1 |
Новичок
Джуниор
Регистрация: 14.06.2010
Сообщений: 4
|
заполнение массива (pascal)
Любопытство не дает покоя - который день пытаюсь решить задачку (просто интересно как это работает) и не выходит. А задача на заполнение массива элементами по определенной траектории. Скажем, мне нужно в порядке убывания разместить элементы в направлении, указанном на рисунке:
Безымянный.JPG код что-то не получается: до центра дохожу и стопорится, да к тому же зацикливается (только и успевай тормозить выполнение). Использую циклы while и if. Кто-нибудь знает верное решение? Подскажите/помогите |
14.06.2010, 21:24 | #2 |
Форумчанин
Регистрация: 24.04.2010
Сообщений: 205
|
Братишка! Совершенно недавно сталкнулся с аналогичной проблемой. Если собираешься решать ее через двухмерный массив, то бестолку. МАтрица может быть или прямоугольной или треугольной. При попытке создать нарисованную тобой, я потерял половину значений. Лезет ошибка AcssesViolation, то есть обращение к элементу массива которого нет.
|
15.06.2010, 07:35 | #3 |
Участник клуба
Регистрация: 29.12.2009
Сообщений: 1,166
|
в 2 цикла решается эта задача
могу выполнить за вознаграждение
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть] |
15.06.2010, 12:38 | #4 |
Новичок
Джуниор
Регистрация: 14.06.2010
Сообщений: 4
|
baster128
Сестренка, если что RUSt88 платно утолять любопытство не хочется) но за предложение спасибо! Думала общими усилиями отыскать ответ. В интернете решения этой задачи нет. Конечно, зарабатывать людям (вроде Вас, RUSt88) тоже надо, не спорю. Ну может все таки найдутся волонтеры, вроде меня |
15.06.2010, 12:40 | #5 |
А может и не...
Участник клуба
Регистрация: 27.03.2010
Сообщений: 1,269
|
Есть алгоритмы заполнения матрицы "змейкой", вот их и используй, слегка модифицировав... Утоли свои желания!!!
Перемешивай дело с бездельем и не сойдешь с ума...
|
15.06.2010, 13:02 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Тебе, сестренка, нужно что-то в этом роде:
Код:
I'm learning to live...
|
15.06.2010, 13:12 | #7 | ||
Новичок
Джуниор
Регистрация: 14.06.2010
Сообщений: 4
|
Цитата:
Цитата:
У меня получилось следующее: Код:
|
||
15.06.2010, 13:21 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Если тебе подходит мой пример - бери не стесняйся
I'm learning to live...
|
|
15.06.2010, 13:28 | #9 |
Новичок
Джуниор
Регистрация: 14.06.2010
Сообщений: 4
|
Спасибо за пример. Несовсем то, что требовалось, но теперь буду "мудрить", опираясь на него
|
15.06.2010, 15:06 | #10 |
Форумчанин
Регистрация: 16.04.2009
Сообщений: 247
|
Если я правильно понял условие задачи, то...
Я рачертил различные варианты траектории в зависимости от размеров квадратной матрицы у себя в тетрадке. Сперва меня заинтересовала зависимость количества элементов на траектории от размеров матрицы. Там получаются такие числа: 1 4 7 12 17 24 31 40 49 Если посмотреть на разницу между соседними числами, то получим: 3 3 5 5 7 7 9 9 Это мне надо было, чтоб сразу числа пихать в массив по возрастанию или по убыванию, но... Мне было лень выводить формулу, а потом ещё и доказывать её(Хотя это не обязательно, лишь бы работало. Тут вроде математическая индукция, хотя я не уверен. Или наверное лучше будет с суммами помутить). Поэтому я предпочёл чисто техническое "грязное" решение - в цикле посчитать это число на основе того, что я выше установил. Теперь как построить траекторию? Слышали когда-нибудь про "барьер"? Смотрите, наша траектория всегда меняется только одним из четырёх возможных способов. Если мы пометим все клетки, в которые наша траектория попасть не может мы получим гораздо более простую картину, типа(o - клетка траектории, x - барьер): oxxxxxo ooxxxoo oooxooo ooooooo oooxooo ooxxxoo oxxxxxo Короче, почертите на куске бумаги, посмотрите. Забить такой барьер в массив попроще будет. Вот что у меня получилось. Писал правда на Delphi. Не знаю как другие компиляторы переварят константы из программы. Ещё, я писал в компактном стиле, но надеюсь, в данном случае это не ухудшит понятность кода. Можно поиграться с константой n, а можно заменить её вводом. Просто с константой удобнее отлаживать было. И ещё раз понадеюсь, что правильно понял условие задачи. Код:
Последний раз редактировалось megachuhancer; 15.06.2010 в 15:13. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Заполнение массива | siemdi | Общие вопросы C/C++ | 12 | 27.05.2010 22:21 |
Заполнение трехмерного массива | General_vrn | Общие вопросы Delphi | 2 | 03.05.2010 16:59 |
Заполнение массива. | Небесный | Общие вопросы C/C++ | 3 | 01.09.2009 01:39 |
[Pascal] заполнение двумерного массива | Рамик | Помощь студентам | 13 | 18.02.2009 20:08 |
Заполнение массива числами | Ermiss | Общие вопросы C/C++ | 7 | 25.11.2007 14:54 |