Хочу спросить знающих людей.
Вот отрывок из алгоритма :"Обратная польская запись просматривается слева направо."
Подразумевает ли это предложение использование стека однозначно?
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
| Demm |
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 33 Пол: Мужской Репутация: 0 |
Хочу спросить знающих людей.
Вот отрывок из алгоритма :"Обратная польская запись просматривается слева направо." Подразумевает ли это предложение использование стека однозначно? |
![]() ![]() |
| Demm |
Сообщение
#2
|
|
Новичок ![]() Группа: Пользователи Сообщений: 33 Пол: Мужской Репутация: 0 |
Я и не говорю,что стек с этим связан.
Вот у меня было задание Цитата Написать подпрограмму для вычисления значение выражения, представленного в обратной польской записи. Я написал,а она меня послала куда подальше! Код function count_result (op1,op2:real;o:string):real; var c:char; r:real; begin if length(o)<>1 then t:=false; c:=o[1]; t:=true; case c of '+':r:=op2+op1; '-':r:=op2-op1; '/':r:=op2/op1; '*':r:=op2*op1; else t:=false; end; count_result:=r; end; procedure calc; var tek,oper1,oper2:pitem;{адрес текущей записи и ее операндов} op1,op2:real;{операнды в числовом выражении} op:set of char; n:integer; r:real;{результат операции} c:char; begin tek:=first; op:=['+','-','/','*']; while (tek<>nil) do begin c:=tek^.info[1]; if (c in op) then begin oper1:=tek^.pred; oper2:=oper1^.pred; if (oper1=nil)or(oper2=nil) then t:=false; val(oper1^.info,op1,n); if n<>0 then t:=false; val(oper2^.info,op2,n); if n<>0 then t:=false; r:=count_result(op1,op2,tek^.info); if t<>false then begin str(r:8:2,oper2^.info); oper2^.next:=tek^.next; dispose(oper1); if oper1<>nil then oper1^.pred:=oper2; dispose(tek); tek:=oper1; end; end else tek:=tek^.next; end; if (first^.next<>nil) or (first^.pred<>nil) then begin writeln('выражение ошибочно'); end; end; Я искал ,но что-то ничего не нашел на этом форуме!(я правда не искал как "полиз") Сообщение отредактировано: Demm - |
Demm Интересно 8.06.2004 22:05
GLuk Какой-то странный вопрос... понятие стека в данном… 8.06.2004 23:01
Demm Вот это алгоритм,который мне дала наша преподша:
… 9.06.2004 0:23
Altair
Чушь по моему.
Вообще если работает правильно, то… 9.06.2004 11:37
Demm Уж не знаю какая там идеодогическая разница,но удо… 9.06.2004 19:20
Altair А идеологическая разница вот в чем:
в паскале все … 9.06.2004 19:31
Demm Вообще условие задачи
Вот все что написано в зада… 9.06.2004 20:44
GLuk Я не зря задал первый вопрос: "Как связан сте… 9.06.2004 23:38![]() ![]() |
|
Текстовая версия | 10.12.2025 12:17 |