Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 293
от 27.05.2004, 23:50

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 488
Отправлено ответов: 1810
Активность: 370.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Boriss
Статус: Профессиональный
Общий рейтинг: 162.94
URL: Программирование на Паскале
[Подробней >>]
Snowm@n
Статус: Опытный
Общий рейтинг: 111.13
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 162.23
[Подробней >>]
 
Student
Статус: Начальный
Общий рейтинг: 150
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.63
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 487. Уважаемые эксперты! Помогите разработать программу! К стеку, содержащему возрастающую последовательн... (ответов: 5)

Вопросов: 1, ответов: 5


 Вопрос № 487

Уважаемые эксперты! Помогите разработать программу!
К стеку, содержащему возрастающую последовательность чисел, нужно добавить элементы так, чтобы порядок возрастания сохранялся. В приложении организация, добавление и просмотр стека, условием окончания ввода которого является число 999. Заранее спасибо.


Приложение:


Вопрос отправлен: 24.05.2004, 23:43
Отправитель: Romashka

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Доброе время суток, Romashka!
1) о терминологии: это не стек.
Стек не предполагает никакой сортировки по определению.
В нем реализуется принцип LIFO: "последним занесено - первым извлечено"
2) нужно все вносимые числа сортировать (у Вас можно вводить начальную
последовательность в любом порядке)
3) Вот мой вариант решения задачи:

Приложение:

Ответ отправлен: 25.05.2004, 18:24
Отправитель: Boriss


Отвечает Snowm@n

Приветствую Вас, Romashka!
При добавлении очередного элемента вытаскиваешь из стека все элементы большие него, засоваваешь элемент, засовываешь все вытащенные, в порядке, обратном вытаскиванию (всвязи с идеологией стека). По-моему особой проблемы тут нет.

Ответ отправлен: 26.05.2004, 09:52
Отправитель: Snowm@n


Отвечает sir henry

Здравствуйте, Romashka!
Есть простой способ для организации сортированых данных, построеный на основе динамических списков - TCollection. Позволяет удалять, добавлять элементы и при этом сортировать по желанию. Пример есть в каталоге примеров BP7.

Ответ отправлен: 25.05.2004, 11:02
Отправитель: sir henry


Отвечает Student

Здравствуйте, Romashka!
Можно осортировать данные после ввода, например методом Шелла...
Но если я правильно понял Ваш вопрос, то в приложении то, что Вам нужно.
Удачи.
С ув. Student.

Приложение:

Ответ отправлен: 25.05.2004, 23:57
Отправитель: Student


Отвечает Ayl

Добрый день, Romashka!
Ну могу предложить такой алгоритм.
Пусть есть исходный стек, в котором элементы расположены по возрастанию. И пусть есть новый элемент, который надо добавить в этот стек в нужное место, чтобы порядок сохранился. Поступаешь так.
Заводишь второй стек. Вначале он пустой.
Проверяешь верхний элемент исходного стека. Если он меньше, чем новый, то ничего делать не нужно, просто добавляешь новый элемент в стек. Если же он больше, то извлекаешь его из стека и заносишь во второй стек. Снова проверяешь верхний элемент стека и поступаешь аналогично. Цикл "проверка верхнего элемента -> перемещение его во второй стек" продолжается до тех пор, пока либо очередной элемент не станет меньше нового, либо пока стек не станет пустым.
Как только место для нового элемента нашлось, добавляешь его в стек и переписываешь все элементы из второго стека в исходный. Все.
В приложении - каркас реализации.
Кстати, это задание такое - делать через стек? Потому что это не оптимальная структура для решения такой задачи. Лучше всего работать со связанным списком, в котором допустимо обращение к любому элементу (в стеке - только к верхнему). Со списком просто ищешь позицию, куда надо вставить элемент, и изменяешь несколько указателей, что бы добавить элемент в список.


Приложение:

Ответ отправлен: 25.05.2004, 13:38
Отправитель: Ayl



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (15)
Perl (2)
Builder / Delphi (17)
Pascal (21)
Basic / VBA (2)
Java / JavaScript (4)
PHP (12)
Криптография (6)
WinAPI (8)
Радиоэлектроника (9)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (49)
"Железо" (30)
Поиск информации (16)
Администратору
Windows NT/2000/XP (22)
Linux / Unix (9)
Юристу
Гражданское право (10)
Семейное право (8)
Трудовое право (9)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное