Большой Воронежский Форум
Страница 1 из 2
1 2 >
» Программирование>Помогите в написании программки на паскале
Brick 18:39 07.09.2011
Я учусь в строяке на первом курсе на факультете информационных систем и технологий. На первой паре над нами поиздевался препод, задал задачку на дом, учитывая что все из нас знают по минимуму. Так вот. Надо задать поле 10x10, на этом поле поставить точку, которая должна прийти к поставленному финишу минуя рандомно расставленные мины. Если такого не получается то написать что мол нельзя пройти. Если кто может объяснить как это написать, ну или просто подкинет идейку, буду очень благодарен. Заранее спасибо=)))
потный 19:09 07.09.2011
делфи..форма..на форме 100кнопок..расположены 10х10
на форме 3 радиобаттона
1. установить старт
2. установить финиш
3. установить мину

у всех кнопок один и тот же обработчик, код такой
если радиобутн = установить старт, то написать на кнопке "старт"
если радиобутн = установить финиш, то написать на кнопке "финиш"
если радиобутн = установить мину, то написать на кнопке "мина"

т.о ты получишь поле на котором расставлены мины , указана начальная точка, конечная и расставлены мины
помещаем на форму кнопку, называем ее "паехали!"
это так интерфейс без лишних заморочек.

обработчик кнопки "паехали"..
ээ.может с кнопкаме я херова придумал, зато быстрореализуемо..в идеале это какой нить грид может быть...хз вощем...
дальше
1.создаеш массив 10х10 , элементы которого сооответствуют кнопкам
2. обходиш элементы формы, получаеш 10х10 кнопок..и заносишь соответственное значение в массив
если на кнопке ниче не написано. то в массив 0
если написано "мина", то 1
старт и финиш 2 и 3
т.о получаеш массив 10х10.

получаеш строку и столбец элемента 2 (старт)
и передаеш координаты в рекурсивную функциию

рекурсивнаяФункция (номерстроки, номер столбца)
код такой
в идеале у каждой клетки 8 соседних
делаеш цикл от 1 до 8 или же два вложенных цикла один для строк второй для столбцов
задача этих циклов обратитса к каждой соседней клетке..соотв. ввести проверку чтобы не уйти за границу массива
получил ты например клетку, которая левее и выше чем старт, т.е.
номерстроки = номерстрокистарта-1;
номерстолбца = номерстолбцастарта-1;
если в этой клетке 1 ,то этто мина, перейти к след клетке
если в клетке 3 (финиш), то все..мы пришли..выводиш весь путь..с надпесью кангратьюлейшн
если в номере 0 (мины нет), то выызваеш опять рекурсивную функцию с новыми координатами

как кто так, оо..как раз переиндексация закончилась...скоротал приятно время..удачи, будут вопросы пеши

зы..алгоритмо далеко не оптимальный..совсем не оптимальный, но насколько я понял задача нахождения оптимального расстояния и не ставилась
silly 19:23 07.09.2011
потный пытается описать волновой алгоритм, если вдруг кто не понял этот поток сознания
потный 19:26 07.09.2011
silly, ы, я этих ваших сферических коней в вакууме не знаю, алгоритмы графы и т.д.
корпускулярно волновой мегалол
--
наверное поэтом я до сих пор быдлокодер(
Brick 19:56 07.09.2011
потный спасибо за твои старания, но мне все это надо провернуть в Pascal ABC. Извиняюсь что раньше не написал( Походу с моими знаниями это не возможно))) буду продолжать все учить
Spectator 21:22 07.09.2011

Сообщение от потный:
наверное поэтом я до сих пор быдлокодер(

тем не менее, ты действительно описал волновой алгоритм))) ты до него что, сам додумался, что не знаешь названия?))


Сообщение от Brick:
потный спасибо за твои старания, но мне все это надо провернуть в Pascal ABC. Извиняюсь что раньше не написал( Походу с моими знаниями это не возможно))) буду продолжать все учить

почитал про Pascal ABC, всё что описал потный там, судя по всему, вполне реализуемо. он хоть и несколько сумбурно это сделал (описал), но вполне грамотно.
разберись с рекурсиями, на простых примерах типа обхода графа.
например - тут
http://nstu.berdsk.ru/cprog/HTML/086.htm Правда это на C
Вот на Паскале http://fictionbook.ru/author/a_v_cve...ne.html?page=4
и тебе станет понятно что написал потный

Поле в твоем случае можно представить как граф, где каждая ячейка связана с 8 соседними (исключая те, где "стоят мины"). Можно завести промежуточную структуру, которая будет являться такой же как и в примере, можно обойтись и без нее, просто передавать координаты.
bdot 22:00 07.09.2011
Brick, подоздеваю препод ожидает что задачу никто не решит и вы в результате будете решать ее весь год.
aerin 23:15 07.09.2011
Волна легко реализуется и без рекурсии, а с учетом маленьких размеров поля можно обойтись и без вспомогательных структур.
Spectator 23:54 07.09.2011

Сообщение от aerin:
Волна легко реализуется и без рекурсии, а с учетом маленьких размеров поля можно обойтись и без вспомогательных структур.

Любой рекурсивный алгоритм так или иначе можно решить без рекурсии. Другой вопрос - зачем? Если рекурсии для подобного рода задач и придуманы?
Кроме того - задача академическая, а не реальная, так что любой адекватный преподаватель захочет увидить именно решение с использованием рекурсии.
aerin 00:28 08.09.2011
Кто умеет - тот делает, кто не умеет - тот учит других. (с) Б. Шоу

Это я про "академичность задач" и "адекватность преподавателей". Дурацкая университетская манера из всего делать науку. А задача самая что ни на есть практическая, вспомним, наприме, игру lines.
Spectator 00:37 08.09.2011

Сообщение от aerin:
Дурацкая университетская манера из всего делать науку.

Она не дурацкая, она правильная. Кроме того, она есть вне зависимости от Вашего к этому отношения. И манера эта есть, я уверен, и у преподавателей строяка. Так что для автора темы реальность как раз в том чтобы разобраться в алгоритме, а не в том чтобы решить задачу наиболее удобным ему путем.
Pengvin 08:34 08.09.2011
Я вот по этой статье делал поиск пути алгоритмом А* http://www.policyalmanac.org/games/a...torial_rus.htm . Написано совсем для дураков, даже я по ней смог разобраться.
потный 08:37 08.09.2011

Сообщение от Spectator:
ты до него что, сам додумался, что не знаешь названия?))

лет 10 назад...в институте писал "сапер" по дос на борланд 3.01...и там, когда кликаешь на клетку, в соседних клетках которой нет ни одной мины, должен открываться большой участок (ну кто играл тот поймет)..тогда и придумал этот метод обхода клеток,...про то что это уже "запатентировано" как волновой алгоритм узнал впервые

Сообщение от Brick:
но мне все это надо провернуть в Pascal ABC

не знаю что такое поскаль абц, я в досе поле/кнопки/кины руками рисовал
bdot 11:12 08.09.2011

Сообщение от Spectator:
рекурсивный алгоритм так или иначе можно решить без рекурсии. Другой вопрос - зачем?

Например если глубина рекурсии получается очень большой. Стек не безграничный.

Кроме того, мне кажется данную задачу лучше решать не обходом графа вгрубину (стек/рекурсия), а в ширину (очередь) - так путь должен найтись быстрее, и в качестве приятного бонуса он будет кратчайшим. См. http://en.wikipedia.org/wiki/Breadth-first_search
Spectator 12:11 08.09.2011

Сообщение от bdot:
Например если глубина рекурсии получается очень большой. Стек не безграничный.

Кроме того, мне кажется данную задачу лучше решать не обходом графа вгрубину (стек/рекурсия), а в ширину (очередь) - так путь должен найтись быстрее, и в качестве приятного бонуса он будет кратчайшим. См. http://en.wikipedia.org/wiki/Breadth-first_search

Можно и в ширину, есть и другие пути оптимизации скорости поиска пути, поскольку эта задача находит практическое применение в играх, способов существует масса. http://ru.wikipedia.org/wiki/Поиск_пути
Речь вроде о задачке для первого курса А не о поиске оптимального алгоритма, который вообще надо искать исходя из конкретной практической задачи.
aerin 14:15 08.09.2011
А что в исходном сообщении не описана конкретная практическая задача?
bdot 14:19 08.09.2011
Spectator, ну для первого курса а тем более первой пары задачка мягко говоря сложновата. Но возможно ТС заинтересуется и попытается изучить эту проблему.

В любом случае, даже просто упоминение такий вещей как BFS и DFS должно произвести впечатление на препода.


PS: русская википедия в разделе алгоритмов - фигня полная, лучше изучать их на оригинальном языке - обычно там подробнее и понятнее описано. Кроме того, надо привыкать к английским терминам а не их спорным переводам на русский.
Ronaldinho 14:23 08.09.2011

Сообщение от Brick:
На первой паре над нами поиздевался препод

А как препода зовут?

P.S. Зря ты туда поступил, программированию тебя там не научат, будешь знать всего по немногу и конкретно ничего.
Spectator 16:00 08.09.2011

Сообщение от aerin:
А что в исходном сообщении не описана конкретная практическая задача?

Конкретная задача (теоретическая, а не практическая), описанная в исходном сообщении может быть решена как поиском в глубину так и поиском в ширину, при таком размере поля (10x10) путь будет найден за адекватное время обоими алгоритмами. Просто зашел спор - какой поиск лучше.

Сообщение от bdot:
Spectator, ну для первого курса а тем более первой пары задачка мягко говоря сложновата. Но возможно ТС заинтересуется и попытается изучить эту проблему.

Если она обязательна для выполнения всеми - согласен. Если просто проверить уровень знаний - вполне адекватная.

Сообщение от bdot:
В любом случае, даже просто упоминение такий вещей как BFS и DFS должно произвести впечатление на препода.


PS: русская википедия в разделе алгоритмов - фигня полная, лучше изучать их на оригинальном языке - обычно там подробнее и понятнее описано. Кроме того, надо привыкать к английским терминам а не их спорным переводам на русский.

Согласен, но я же не знаю, насколько автор дружит с английским.
bdot 20:18 08.09.2011

Сообщение от Ronaldinho:
программированию тебя там не научат

дык нигде не научат, надо самому учиться.


Spectator, согласен, я просто предложил еще один вариант.
Battle Coder 20:26 08.09.2011

Сообщение от bdot:
Spectator, ну для первого курса а тем более первой пары задачка мягко говоря сложновата. Но возможно ТС заинтересуется и попытается изучить эту проблему.

Есть такое =) хотя, вообще говоря, на олимпиадах (для школьников!) встречал задачки и посложнее этой. Если мозг есть, можно догадаться, как её решить
может не оптимально, но хотя бы как-то... Оно и написано в первом сообщении что да, препод решил поиздеваться... ох. хорошие преподаватели - редкость цените их (речь не о тех, кого можно сдать "нахаляву", а о тех, кто вас чему-то научит, потом, может поймёте)

Сообщение от bdot:
дык нигде не научат, надо самому учиться.

Ага... и не только программированию. Увы.

Сообщение от Ronaldinho:
P.S. Зря ты туда поступил, программированию тебя там не научат, будешь знать всего по немногу и конкретно ничего.

Не думаю, что место поступления так сильно влияет на конкретный результат... разве что возможности разные вузы/специальности дают немного разные. А то, как их используют - зависит только от студента. Я раньше (до выпуска из школы) хотел поступать куда-нить в МГУ или МФТИ, но передумал... типа ехать в другой город и т.п... а то в родном городе. Не жалею, что не поехал. =) Ну разве что совсем чуток.
Battle Coder 20:28 08.09.2011

Сообщение от bdot:
PS: русская википедия в разделе алгоритмов - фигня полная, лучше изучать их на оригинальном языке - обычно там подробнее и понятнее описано. Кроме того, надо привыкать к английским терминам а не их спорным переводам на русский.

А я бы посоветовал книжку Окулова "программирование в алгоритмах". Правда, там примеры приводятся на Паскале, но при желании можно транслировать куда угодно... приводятся же именно алгоритмы.

Википедия, конечно, хорошо - но это всё-таки большой-большой справочник... а не учебник. Полезно туда заглядывать.
Spectator 00:03 09.09.2011

Сообщение от Battle Coder:
А я бы посоветовал книжку Окулова "программирование в алгоритмах". Правда, там примеры приводятся на Паскале, но при желании можно транслировать куда угодно... приводятся же именно алгоритмы.

Википедия, конечно, хорошо - но это всё-таки большой-большой справочник... а не учебник. Полезно туда заглядывать.

а я бы посоветовал учить английский)))
Palych 08:32 09.09.2011
Не буду писать умные слова, анализировать алгоритмы: если еще нужно решить задачу, пишите в личку.
PS. Задача не стоит того, чтобы столько о ней рассуждать.
Spectator 09:52 09.09.2011

Сообщение от Palych:
Не буду писать умные слова, анализировать алгоритмы: если еще нужно решить задачу, пишите в личку.
PS. Задача не стоит того, чтобы столько о ней рассуждать.

Вы сразу прейскурант на пять лет обучения распишите))) ну, и после него.
тут, думаю, любой отметившийся способен помочь человеку практическим решением.
Brick 10:30 09.09.2011
Со своими знаниями(МИЗЕРНЫМИ) решить задачку я не смог, знаний именно в программировании у меня очень мало(База паскаля), я только начал учиться, впереди у меня еще 4 года, за это время чему-то меня научат в вузе, чему-то я научусь сам. Но я только начал изучать программирование(с самых азов) и из того что вы написали я мало что понял. Спасибо всем кто отписался. Вижу что люди отзывчивые. Наберусь знаний, буду обращаться к вам за помошью=))) А сейчас забудте про эту задачку, ну ее...
Ronaldinho 12:40 09.09.2011

Сообщение от bdot:
дык нигде не научат, надо самому учиться.

Вы не правы, следуя вашей логике все программисты самоучки?

Сообщение от Battle Coder:
Не думаю, что место поступления так сильно влияет на конкретный результат... разве что возможности разные вузы/специальности дают немного разные. А то, как их используют - зависит только от студента. Я раньше (до выпуска из школы) хотел поступать куда-нить в МГУ или МФТИ, но передумал... типа ехать в другой город и т.п... а то в родном городе. Не жалею, что не поехал. =) Ну разве что совсем чуток.

Не знаю как в других ВУЗах Воронежа, но в строяке единственное, что было интересно это программирование на C с GTK+ в UNIX, всё остальное это (мертвые) Delphi и Visual Basic .NET (при этом половина пар забита совершенно не нужными ИТ'шнику дисциплинами, типа строительных материалов, проектирования строительных конструкций и т.п.), как правило на убитых компах, при этом половина пар просто пропадала из-за не работоспособности компов и операционок.
Это я пишу как студент учащийся на той же специальности, что и автор
Brick 12:59 09.09.2011
Ronaldinho
Видно вы не застали хороших компьютеров. У нас сейчас все без исключения пары: Введение в специальность, Введение в программирование, Информатика - Проходят в аудитории с хорошими компьютерами. В плохих аудиториях идут только лекции, на которых за компьютерами мы не работаем. Может только в дальнейшем нас лишат подобного рода изыска=)))
Ronaldinho 13:02 09.09.2011
Да есть аудитории с хорошими компами, но там редко бывают у нас пары.
Так ты напишешь как препода зовут или нет?)
Brick 13:10 09.09.2011
Баркалов Сергей Алексеевич
Страница 1 из 2
1
2 >
Вверх