|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2008, 15:32 | #1 |
Регистрация: 14.12.2008
Сообщений: 9
|
Обратная польская запись
Помогите пожалуйста составить программу на PASCAL для перевода арифметических выражений в обратную польскую запись. Уже все облазила,но именно на Pascal нигде нету(((
|
23.12.2008, 20:14 | #2 |
Регистрация: 14.12.2008
Сообщений: 9
|
Вот один из вариантов решения,но она не идет. Подскажите,в чем ошибка.
const oper1=['+','-']; oper2=['*','/']; symbol=['a'..'z','A'..'Z','0'..'9','.']; var sym :char; so,si :string; p :word; procedure getsym; begin while (p<=length(si))and(si[p] in [' ',#9]) do inc(p); if p>length(si) then sym:=#0 else begin sym:=si[p];inc(p) end; end; procedure expression;forward; procedure get_var; begin so:=so+' '; while sym in symbol do begin so:=so+sym;getsym end end; procedure term; var a:char; begin if sym='(' then begin getsym;expression;getsym end else get_var; while sym in oper2 do begin a:=sym;getsym;term;so:=so+a end end; procedure expression; var a:char; begin if sym='+' then getsym else if sym='-' then begin a:='-';getsym end else a:=' '; term; if a='-' then so:=so+' (-)'; while sym in oper1 do begin a:=sym;getsym;term;so:=so+a end end; begin si:='-1.2-(-1*3.14+1/(a/b+cab*9))';so:='';p:=1; getsym;expression;writeln(si);write ln(so); end. |
24.12.2008, 00:25 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
что значит - "не идёт" ?!?? под TurboPascal идёт.
вводится строка выражения: Код:
Код:
вкратце - для того, чтобы сделать действия с двумя числами (операндами) нужно ввести первое число. поместить его в стек. потом ввести второе число. а потом указать действие, которое вы хотите выполнить над тем числом, которое у вас "на рабочем столе" и тем, которое находится в стеке. результат выполнения помещается в стек... |
25.12.2008, 13:42 | #4 |
Регистрация: 14.12.2008
Сообщений: 9
|
Программа выдает ошибку в строчке
Код:
|
26.12.2008, 19:48 | #5 |
Регистрация: 14.12.2008
Сообщений: 9
|
Паскаль выдает ошибку 39 в [' ',#9]). Что делать не знаю,подскажите пож-а,может паскаль другой скачать(скажите где и какой лучше). Уже 2 паскаля скачивала,на них все равно не идет. Очень срочно.
|
26.12.2008, 21:04 | #6 |
Регистрация: 14.12.2008
Сообщений: 9
|
Убрала запятую,теперь выдает ошибку 26 вот здесь: else a:=' ';
|
27.12.2008, 10:23 | #7 | |
Регистрация: 14.12.2008
Сообщений: 9
|
Выкладываю окнчательный вариант программы,может кому пригодится:
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обратная польская нотация | Sexy Fox | Помощь студентам | 9 | 22.09.2011 14:57 |
Обратная польская запись | Роман Радер | Общие вопросы Delphi | 0 | 09.12.2008 18:18 |
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 |