Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2007, 09:22   #1
Sexy Fox
 
Регистрация: 18.06.2007
Сообщений: 4
Восклицание Обратная польская нотация

ПОМОГИТЕ ПЛЗЗЗ..... написать программу на Delphi (с формой!!!) про обратную польскую нотацию!!!! ПОЖАЛУЙСТА И СПАСИБКИ ЗАРАНЕЕ... ЭТО ОЧЧЧЕНЬ ВАЖНО...........
Sexy Fox вне форума Ответить с цитированием
Старый 20.06.2007, 09:29   #2
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Sexy Fox Посмотреть сообщение
про обратную польскую нотацию!!!!
А это как???
Alex21 вне форума Ответить с цитированием
Старый 20.06.2007, 09:40   #3
Sexy Fox
 
Регистрация: 18.06.2007
Сообщений: 4
Сообщение

Использyется для вычисления аpифметических выpажений. Для
пеpевода в нее необходим стек аpифметических опеpаций.

Алгоpитм пеpевода пpоизвольного выpажения в ОПH очень пpост:
Выpажение сканиpyется слева напpаво, пpи этом pазбиваясь
на токены - числа и знаки аpифметических опеpаций. Если
очеpедной токен - число, не глядя пишем его в выходнyю стpокy.
Иначе, выталкиваем из стека и пишем в выходнyю стpокy все
опеpации с пpиоpитетом выше текyщей, а самy опеpацию
пихаем в стек. Левая скобка всегда пишется в стек (ее пpиоpитет -
самый низкий). Пpавая скобка выталкивает из стека все опеpации
вплоть до левой скобки включительно, сама она в стек не пишется.
Когда достигнyт конец входного выpажения, пpосто выталкиваем
из стека все что в нем есть.


Пpимеp: (2+3)*4+5
левая скобка - пихаем в стек
2 - пишем в выходнyю стpокy
+ - стек пyст, поэтомy ничего не достаем, а напpотив, пихаем плюс
3 - пишем в выходнyю стpокy
пpавая скобка - выталкиваем плюс и левyю скобкy
* - стек снова пyст, пихаем yмножение
4 - пишем в выходнyю стpокy
+ - пpиоpитет yмножения - выше, поэтомy его достаем, а плюс - пихаем
5 - пишем в выходнyю стpокy
EOF - достаем из стека плюс

Имеем: 2 3 + 4 * 5 +

Обpати внимание на следyющее:
- Вместо записи в выходнyю стpокy можно тyт же вычислять выpажение,
для этого необходим еще один стек (почемy - сообpази сам)
- Если выталкивать из стека опеpации с пpиоpитетом выше или pавным
текyщемy, то выполнение опеpаций с одинаковым пpиоpитетом бyдет
пpоизводиться слева напpаво, т.е. как все мы пpивыкли, да и его глyбина
yменьшиться (хоть это и не кpитично)
- Скобки в выходнyю стpокy не пишyтся, так как их пpиоpитет yчитывается
автоматически; однако их баланс легко пpовеpяется.
Sexy Fox вне форума Ответить с цитированием
Старый 20.06.2007, 22:24   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

как вы правильно заметили: можно тутже вычислять текущее действие.

Сначала надо определить приоритеты арифметических действий, а затем выполнять их в этойже последовательности в виде цикла, причем заменять 2 значения результатом.
Будет так(по вашему примеру):
/////////////////////////////////////
(2+3)*4+5 {строка задана}
5*4+5 {выполнили операцию в скобках, и заменили на результат}
20+5 {выполнили операцию *, и заменили на результат}
25 {выполнили операцию +, и заменили на результат}
///////////////////////////////

Посмотрите приложенный файл (Delphi), писал как-то прогу для расчета 1-го арифметического действия. Доработав ее можно выполнить вашу задачу. (Мне этим заниматься сейчас некогда, буду рад, если кто-то осуществит описанное выше).

-=2=- Есть другой вариант: есть готовые компоненты вычисления арифметических операций.
Вложения
Тип файла: rar calc.rar (6.7 Кб, 101 просмотров)
Alex21 вне форума Ответить с цитированием
Старый 21.09.2011, 20:51   #5
rom4eg
Новичок
Джуниор
 
Регистрация: 21.09.2011
Сообщений: 5
По умолчанию Обратная польская нотация

Помогите пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!
Мне нужно =>>Разработать программу получения обратной польской записи арифметических выражений, составленных из однобуквенных идентификаторов, открывающей и закрывающей скобок и операций: +, –, /, *, ^ (возведение в степень).
Алгоритм перевода, предложенный Э. Дейкстрой, основывается на использовании стека с приоритетами. Все символы операций и скобки имеют определенный приоритет. Для по-строения польской записи продвигаются вдоль выражения слева направо. Операнды пере-писываются в выходную строку, а операции запоминаются в стек. Если приоритет поме-щаемой в стек операции меньше приоритета операции, находящейся в вершине стека, то происходит выталкивание операций из стека по одной до тех пор, пока в вершине не ока-жется операция с меньшим приоритетом или стек не окажется пустым. Закрывающая скоб-ка вызывает выталкивание всех символов до открывающей скобки (скобки в выходное вы-ражение не переписываются). Операции имеют следующие приоритеты:

Операция ( +,– *,/ ^
Приоритет 0 1 2 3

Нужно написать программу на любом языке программирования...
ПОМОГИТЕ ПОЖАЛУЙСТА КТО МОЖЕТ....!
rom4eg вне форума Ответить с цитированием
Старый 21.09.2011, 21:01   #6
rom4eg
Новичок
Джуниор
 
Регистрация: 21.09.2011
Сообщений: 5
По умолчанию Обратная польская нотация

Операция->Приоритет
0->(
1->+,-
2 ->*,/
3->^
Помогите прошу, пожалуйстаааааааааааааааааа
rom4eg вне форума Ответить с цитированием
Старый 21.09.2011, 21:25   #7
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Как сказано в Библии:"Просящему, да воздастся".
Держи, но как ты её будешь объяснять преподавателю - проблема твоя (Я сам уже не помню, что там и как).
Писалась на делфи.
Вложения
Тип файла: rar прога 1.rar (222.3 Кб, 113 просмотров)
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 21.09.2011 в 21:27.
Rin вне форума Ответить с цитированием
Старый 22.09.2011, 14:41   #8
rom4eg
Новичок
Джуниор
 
Регистрация: 21.09.2011
Сообщений: 5
По умолчанию

cпасибочки большое!!!выручил!!!
rom4eg вне форума Ответить с цитированием
Старый 22.09.2011, 14:54   #9
rom4eg
Новичок
Джуниор
 
Регистрация: 21.09.2011
Сообщений: 5
По умолчанию Лабораторная работа № 2 СОРТИРОВКА И ПОИСК

Помогите кто может, пожалуйстааааааааааа!!!
Необходимо запрограммировать различные алгоритмы сортировки и поиска, оформив их в виде подпрограмм. Тип информационной структуры обозначен цифрами 1 и 2, которые обозначают линейный список с последовательным и связанным распределением соответственно. Бинарное дерево обозначено цифрой 3. Структура записей и содержимое ключей выбрать произвольным,
№ варианта ->1 ,
Алгоритм->Сортировка подсчетом,
Тип информационной структуры -> 1

Очень нужноооооооооооооо!!!
rom4eg вне форума Ответить с цитированием
Старый 22.09.2011, 14:57   #10
rom4eg
Новичок
Джуниор
 
Регистрация: 21.09.2011
Сообщений: 5
По умолчанию

я твой должник!!!
rom4eg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратная матрица (nxn) Albenous Общие вопросы Delphi 12 27.05.2009 02:17
Delfi7 обратная функция Char mentholl Помощь студентам 5 03.06.2008 10:25
CreateFile - считывание дискеты в файл и обратная запись на нее... kalexi Win Api 1 01.10.2007 19:56
Обратная польская нотация Sexy Fox Помощь студентам 2 22.06.2007 13:27
Обратная связь Oliany PHP 1 06.05.2007 23:40