Помогите найти ошибку в программе стекового калькулятора |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Помогите найти ошибку в программе стекового калькулятора |
Night |
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Женский Реальное имя: Иришка Репутация: 0 |
Помогите, пожалуйста, написать программу на Турбо Паскале «стековый калькулятор» до 23.12.06. Моя программа почему-то не работает. Ответы и советы присылайте на <censored> Заранее большое СПАСИБО! вот сама программа:
Program calculator; Const maxStack = 250; {максимальный размер стека } c: Integer=0; Var stek: array [1..maxStack] of Integer; {стек} x: integer; s: string; a, b: integer; Procedure Push; {положить на стек} begin if c<>maxStack then begin inc ©; stek[c] := x; writeln('pushed ', stek[c]); end; end; Function Pop:integer; {вытащить из стека } begin if c<>0 then begin pop:=stek[c]; dec©; end; end; begin writeln('введите функцию для калькулятора'); write(':'); readln(a); writeln('введите функцию для калькулятора '); write(':'); readln(b); val(s, a, b); if (b=0) and ((length(s)>1) or(s[1]<> '-')) then push else case s[1] of '+': begin a:=pop; b:=pop; x:=a+b; push; { writeln(x);} end; '-': begin a:=pop; b:=pop; x:=a-b; push; { writeln(x);} end; '/': begin a:=pop; b:=pop; if a=0 then writeln ('¤Ґ«Ёвм 0 Ќ…‹њ‡џ') else begin x:=b div a; push; { writeln(x);} end; end; '*': begin a:=pop; b:=pop; x:=a*b; push; { writeln(x);} end; end; writeln('x=',x); readln; end. Сообщение отредактировано: Night - |
Malice |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Сделай процедуру push с параметром, чтоб было ясно, что кладется в стек. А то вот в этом месте:
if (b=0) and ((length(s)>1) or(s[1]<> '-')) then туда кладется хз что.. или после val напиши x=a; |
Текстовая версия | 11.01.2025 8:37 |