Зарегистрироваться
Seekland Info сообщество взаимопомощи студентов и школьников. / Seekland Info спільнота взаємодопомоги студентів і школярів.

Написать программу на языке Pascal, которая для заданного выражения находит его обратную польскую за


0 Голосов
екатерина
Posted Июнь 9, 2014 by екатерина
Категория: Информатика
Всего просмотров: 2041

Помогите доделать программку и проверьте ее пожалуйста!!!!











2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64


program project3;

uses StackPackageForSolveExpression,StackPackageForConvertExpression;
 
const
D1=['0'..'9'];
D2 = ['-','+','*','/'];
 
 
function Priority (Var aCh :Char):integer;
begin
case aCh of
 '*','/': Priority:=3;
 '+','-': Priority:=2;
 '(': Priority:=1;
end;
end;
 
 
function StringToReal(StringElement: string): real;
var
RealResult,c: integer;
begin
val(StringElement,RealResult,c);
if c<>0 then RealResult:=0;
StringToReal:=RealResult;
end;
 
 
 
function ResultOfExpression(var S1: string):real;
var
j:integer;
BinaryResult,a,b,IntResult :real;
begin
 
InitStack1;
 
for j:=1 to Length(S1) do
begin
 if S1[j] in D1 then
 begin
 IntResult:=StrToInt(S1[j]);
 IntStackPush(IntStack,IntResult);
 end
 else
 if S1[j] in D2 then
  begin
  a:= IntStackPop(IntStack);
  b:= IntStackPop(IntStack);
  case S1[j] of
   '+':BinaryResult:=a+b;
   '-':BinaryResult:=b-a;
   '*':BinaryResult:=a*b;
   '/':BinaryResult:=b/a;
   end;
   IntStackPush(IntStack,BinaryResult);
   end;
end;
with IntStack do
begin
ResultOfExpression:=IntData[IntTop];
end;
end;







 

 

 

 

 

Все ответы


0 Голосов
екатерина
Posted Июнь 10, 2014 by екатерина

 


Написать программу на языке Pascal, которая для заданного выражения находит его обратную польскую запись.