Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в стеке [D6, D7, Win2k, WinXP]


Dublicator ©   (2006-03-12 21:47:00) 

Люди!!! Помогите, пожалуйста, решить задачу:
Создать стек из случайных целых чисел и определить, сколько эле-
ментов стека, начиная с вершины, находится до элемента с максимальным
значением.
Нужен сам поиск


Dublicator   (2006-03-13 15:37:00) [1]

Все, спасибо. Я ее уже решил.


Defunct   (2006-03-13 01:55:00) [2]

С точки зрения системщика, что стек, что не стек, в одно - адресуемая память. Поэтому берем указатель на вершину стека и сползаем вниз последовательно читая слова одинакового размера, одновременно с этим подсчитываем число прочитанных элементнов. Если очередной элемент будет больше предыдущего сохраненного максимального элемента, то сохраняем текущий элемент как максимальный и сохраняем его номер. Когда упремся в дно стека - поиск прекращаем, а результатом будет сохраненный номер максимального элемента - 1.


Ihor Osov'yak   (2006-03-13 01:49:00) [3]

>  И вам сложно было их написать? вместо 8 строчек поста? ;))

Не, но не считал целесообразным.
Хотя бы потому, что мне не понятен смысл слова "создать стек" в контексте лидер-постинга, а также см. постинг [4] - то, что вследствии некоторой расслабленности я изначально не собразил...


Petr V. Abramov   (2006-03-13 01:06:00) [4]

> Ihor Osov'yak ©   (12.03.06 21:58) [1]
зы. А строчек паскалевского кода на все это дело - ну 5-10, и  то треть из них декларации..
 И вам сложно было их написать? вместо 8 строчек поста? ;))

> Anatoly Podgoretsky ©   (13.03.06 00:36) [9]
 А это в предвдущем семестре преподавали, так не честно ;))

> Dublicator
 Скажите, ччто конкретно затрудняет в задаче? И Вам либо с ссылок дадут, либо объяснить попытаюся. А просто код дать - никто не даст, сразу ТЗ потребуют, еще чего-нить...


Anatoly Podgoretsky   (2006-03-13 00:36:00) [5]

Джо ©   (13.03.06 00:06) [6]
Если не брать в расчет конкретную реализацию стека, то общего решения нет, поскольку нет количество элементов.
Стандартный стек поддерживает только три операции - Peek, Pop и Push


Anatoly Podgoretsky   (2006-03-13 00:34:00) [6]

Dublicator   (12.03.06 21:47)  
Как предложил Джо решать задачу с помошью двух TStack


Anatoly Podgoretsky   (2006-03-13 00:29:00) [7]

Джо ©   (13.03.06 00:06) [6]
И тоже с поиском, перегонять в массив :-)


Джо   (2006-03-13 00:06:00) [8]

> [4] Anatoly Podgoretsky ©   (12.03.06 23:10)
> Нормальный стек не позволяет ни получить количество элементов,
> ни тем более делать в нем поиск.

Ну, не сказано ведь, что стек, в результате поиска в нем не должен изменить свое состояние. Вполне, ИМХО, ортодоксален стек, который поддерживает определение валидности затребования очередного элемента. То есть, подсчитать кол-во элементов, бывшее в стеке, просто — поочередно вынимать из стека все значения до тех пор, пока из него есть, что вынимать. Соответственно, увеличивать счетчик... Ну, а запихнуть извлеченное в стек обратно также не проблема (если есть в этом нужда) :-)


Ihor Osov'yak   (2006-03-12 23:57:00) [9]

Ангатолий, Вы, как всегда, правы. Прошу извинение за не совсем корректный постинг..


Anatoly Podgoretsky   (2006-03-12 23:10:00) [10]

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


Desdechado   (2006-03-12 22:46:00) [11]

чем стек в этом случае отличается от массива? только способом хранения
ну максимальный элемент массива найти ведь элементарно


Dublicator   (2006-03-12 22:03:00) [12]

Стек уже заполнен. Вот мне и нужно найти максимальное значение-это главное.


Ihor Osov'yak   (2006-03-12 21:58:00) [13]

хм..
Что такое "создать" в контексте Вашего постинга?.
Далее. Решение зависит от того, можно ли решать задачу в процессе заполнения стека, или нужно решать, когда стек уже заполнен. Но в любом случае, искомое количество будет равно или однозначно определятся от индекса (или указателя - смотря какую терминологию используем) максимального элемента.
Относительно поиска. Он собственно нужен только для случая, если ищем решение уже для заполненого стека. Но даже в таком случае - поиск - не более чем последовательный перебор всех элементов - так как стек в общем случае есть неупорядочен.

зы. А строчек паскалевского кода на все это дело - ну 5-10, и  то треть из них декларации..


Наверх

Титульная страница Поиск, карта сайта Написать письмо