IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> префиксна форма записи
алекс
сообщение 26.12.2003 18:09
Сообщение #1


Гость






как вычислить значение выражения, записанного в префиксной форме с использованием стека (дека, очереди). есть влом писать код, мона ссылкой на сайт какой кинуться ;)
 К началу страницы 
+ Ответить 
trminator
сообщение 26.12.2003 18:54
Сообщение #2


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


Предположим, что у тебя уже есть класс-стек с операциями push, pop, volume (volume говорит, сколько элементов в стеке). А выражение пусть записано как массив таких записей:
Код

type TElem = record
 is_sign : boolean; {Является ли знаком операции}
 value : integer {Если операция, то
   1 = +
   2 = -
   3 = *
   4 = /, иначе само значениечисла}
end;

Массив назовем, например, A.

Заведем два стека - ops и nums. В первом храним операции, во втором - операнды.

Дальше делаем что-то такое:
Код

for i:=1 to N do
 if A[i].is_sign then nums.push(A[i].value)
 else begin
   nums.push(A[i].value);
   if nums.volume = 2 then begin
       y:=nums.pop;
       x:=nums.pop;
       op:=pos.pop;
       nums.push(calc(x, y, op))
   end;
 end;


Функция calc просто считает значение x <op> y (х [+-*/] y)


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 20:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"