Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
1

Стек, перевод из постфиксной нотации в инфиксную

24.05.2016, 18:54. Показов 1614. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Нужно перевести выражения из постфиксной нотации в инфиксную. Есть модуль, который выполняет данную операцию. Помогите, пожалуйста, переделать его в работающую программу.


Pascal
1
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
unit PostToInf;
 
interface
 
procedure PostToIn(const postfixString: string; var infixString: string; var error1: boolean);
 
const
  maxStack = 50;
 
type
  stackType = record
    mass: array[0..maxStack] of string;
    stackkIndex: integer;
  end;
 
implementation
 
var
  stack: stackType;
  i: integer;
  error: boolean := false;
  errorStr: string;
 
procedure push(const s: string; var stack1: stackType);  
begin
  inc(stack1.stackkIndex);
  stack1.mass[stack1.stackkIndex] := s;
end;
 
function pop(var stack1: stackType): string;           
begin
  Result := stack1.mass[stack1.stackkIndex];
  inc(stack1.stackkIndex, -1);
end;
 
function stacktop(const stack1: stackType): string;   
begin
  Result := stack1.mass[stack1.stackkIndex];
end;
 
function symb(const ch: char): boolean;
begin
  case Ord(ch) of
    97..122, 65..90: result := true
  else Result := false
  end;
end;
 
function mathSymb(const ch: char): boolean;
begin
  if ((ch = '+') or (ch = '-') or (ch = '*') or (ch = '/') or (ch = '^'))
    then Result := true 
  else Result := false;
end;
 
function empty(const stack1: stackType): boolean;
begin
  if (stack1.stackkIndex = 0)
    then Result := true 
  else Result := false;
  
end;
 
procedure mathSymbAndTwoSymb(var stack1: stackType; const mathSymb1: string);
var
  first, second, unitedSymb: string;
begin
  first := pop(stack1);
  
  if empty(stack1) then
  begin
    errorStr := 'error 2';
    error := true;
    exit;
  end;
  
  second := pop(stack1);
  
  if empty(stack1) then
  begin
    errorStr :=('ERROR! 3');
    error := true;
    exit;
  end;
  
  unitedSymb := ('(' + second + mathSymb1 + first + ')');
  
  push(unitedSymb, stack1);
  
end;
 
procedure PostToIn(const postfixString: string; var infixString: string; var error1: boolean);
var
  i: integer;
begin
 
  for i := 0 to maxStack do
    stack.mass[i] := '';
  stack.stackkIndex := 1;
  error := false;
  
  for i := 1 to Length(postfixString) do
  begin
    if symb(postfixString[i]) then 
      push(postfixString[i], stack)
    else
    if mathSymb(postfixString[i]) then
      mathSymbAndTwoSymb(stack, postfixString[i])
    else
    begin
      errorStr :=('ERROR! 1');
      error := true;
      exit;
    end;
    if error then break;
  end;
  
  if not (stack.stackkIndex = 2) then
  begin
    error:= true;
  end;
  
  infixString:=(stack.mass[stack.stackkIndex]);
 
  error1:=error;
end;
 
begin
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2016, 18:54
Ответы с готовыми решениями:

Перевод из постфиксной в инфиксную
Народ, пишу программу для перевода выражения из постфиксной(обратная польская запись) в инфиксную...

Перевод из постфиксной формы записи в инфиксную с использованием скобок
перевод буквенного выражения с проверкой правильности ввода

Еще задача из раздела "С для начинающих" - перевод из постфиксной записи в инфиксную
Дана алгебраическая формула в постфиксной записи. Получить из нее инфиксную (обычную) запись со...

Перевести выражение из постфиксной в инфиксную форму
В символьной строке записано выражение из букв и операций в постфиксной форме (знак...

0
24.05.2016, 18:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2016, 18:54
Помогаю со студенческими работами здесь

Преобразовать арифметическое выражение из постфиксной формы в инфиксную
У меня задача: преобразовать арифметическое выражение из переменных, знаков арифметическич операций...

программа по переводу из постфиксной формы записи в инфиксную с использованием скобок
c проверкой на правильность ввода, записанная в буквенном виде

Используя стек, вычислить значение выражения в постфиксной форме
Помогите пожалуйста, не получается написать прогу. Задание:В текстовом файле хранится выражение,...

Перевод формулы из префиксной формы в инфиксную
Надо перевести формулу из префиксной формы записи в инфиксную т.е. дано на входе -+*abz*cz сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru