1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
| Флогримм |
28.10.2004 7:39
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 253 Пол: Мужской Репутация: 4 |
вчера сел решать задачи на тему двумерных массивов - матриц и столкнулся с проблемой; какие можете посоветовать приемы программиования для алгоритмов, вида "заполнить матрицу по спирали, зигзагом" и т.д.
мне не конкретной задачи нужно решение, а метод в целом пришла в голову такая идея: написать процедуры движения по матрице в четырех направленияъ (вверх, вниз, влево, вправо) до тех пор, пока не встретим либо конец матрицы ("крайнюю стенку") или же уже заплненный алгоритм и циклически повторять их до тех пор пока не заполним всю матрицу... да, наверное так и попробую хотя мне кажется, что выход, который предложил выше не совсем правильный; может все можно свести все к основной (единственной формуле) формуле где меняться будет только значение i,j-счетчиков в цикле? вобщем матрицы для меня проблема; помогите чем могите; в книгах же только и делают, что задачки пишут, а концепцию разъясникть - :no: вот так а еще вопрос: 1)как в вин2к в ТП7 установить русскую раскладку клавы; 2)как прервать зациклившийся процесс? (Ctrl-Break и Ctrl-F2 не работают) зосим откланиваюсь, с уважением, Флогримм -------------------- Я не буду жить с этой злобой внутри / Я не буду частью смертельной цепи / Я не буду потребителем твоих идей / Я не буду никогда убивать зверей (Unconform)
|
![]() ![]() |
| Бродяжник |
2.11.2004 10:51
Сообщение
#2
|
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: 3 |
Флогримм
Вы слишком широко понимаете смысл слов "у ячейки есть свободная соседняя ячейка". Вы непроизвольно предполагаете, что это выражение значит, что а) ячейка с индексами i,j существует для данной матрицы, т.е. выражение mas[i,j] имеет смысл, а также, что б) значение mas[i,j] равно заданному к. Однако у компьютера другое мышление. Если при компиляции отключена проверка Range check, то компилятор просто генерит код, в котором адресация [i,j] заменяется относительными адресами памяти. И в этом случае адрес памяти, соответсвующий адресации [1,5] для матрицы 4х4, скорее всего, будет соответствовать адресации [2,1]. И по этому адресу записано корректное с точки зрения программы значение, а именно значение к, указывающее на то, что ячейка свободна. При этом программа не знает, что полученное значение было взято вовсе не из мифической ячейки [1,5]. Она смело переходит к не менее мифической ячейке [1,6] (а на деле [2,2])... и снова находит там значение к. "Рулез!"- думает программа. Поэтому я бы заменил прямое обращение к ячейкам [i,j] на вызов функции Код function freemas(i,j: shortint): boolean; begin if (i<1) or (i>size) or (j<1) or (j>size) then freemas:=false else freemas:=(mas[i,j]=k); end; При этом общая структура Вашего алгоритма практически не изменится. Просто вместо Код if mas[i,j]=k then будет Код if freemas(i,j) then ...Я неправ? Сообщение отредактировано: Бродяжник - 2.11.2004 10:53 |
Флогримм Алгоритмы на матрицах 28.10.2004 7:39
Altair
Это тема неоднократно обсуждалась!
Методтаков... 28.10.2004 8:12
Флогримм вот еще несколько вопросов, пожалуй, размещу здесь... 28.10.2004 9:02
volvo
В меню Run -> Parameters вводишь параметры дл... 28.10.2004 9:16
Altair
Да это неважно, все равно вставляй эту сроку.
Э... 28.10.2004 9:32
Флогримм volvo, спасибо. Усвоил. Ща попробую.
ясно
поч... 28.10.2004 10:19
Altair
Зависит от задачи.
и от способа реализации... 28.10.2004 10:26
Флогримм вот как на мой взгляд лучше всего решать задачу на... 1.11.2004 11:41
volvo Смотри, что я наваял: :blink:
program spirall;... 1.11.2004 12:59
Флогримм Вольво, спасибо, ща попробую разобраться.
А с моим... 1.11.2004 13:24
volvo Флогримм
У твоего алгоритма есть очень существен... 1.11.2004 13:39
Флогримм volvo
а зачем проверять?
вот смотри: доходим до п... 1.11.2004 15:00
volvo
А попробуй откомпилировать и запустить свою прогр... 1.11.2004 15:13
Amro Можно здеся посмотреть
http://forum.pascalnet.ru... 1.11.2004 17:05
Altair Согласен. Можно. Так кто тебе мешает это сделать? ... 1.11.2004 17:19
Флогримм
201 Range check error (Ошибка при проверке гр... 2.11.2004 0:15
volvo
но при прогоне программы мы туда-таки попадаем ... 2.11.2004 1:13
Флогримм я понимаю!! прога работает НЕПАРВИЛЬНО... 2.11.2004 7:11
Флогримм Бродяжник!
Ваше сообщение - это то, чего я так... 2.11.2004 20:56
Puzik89 ДОБРЫЙ ДЕНЬ! Может ли кто - то мне подсказать ... 12.06.2007 17:02
volvo Это не спираль, а "змейка" - в поиске на... 12.06.2007 17:06![]() ![]() |
|
Текстовая версия | 8.12.2025 20:35 |