-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnotacaopolonesa.py
86 lines (62 loc) · 1.77 KB
/
notacaopolonesa.py
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
'''-------------------------------------
UFFS CHAPECÓ
ciência da computação
Bárbara Markus: github.com/barbs-pm
Murilo Xavier: github.com/muriloxdo
NOTAÇÃO POLONESA REVERSA
--------------------------------------'''
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
class Pilha:
def __init__(self):
self.pilha = []
def adicionar(self, valor):
self.pilha.append(valor)
def soma(self):
return self.pilha.append(self.pilha.pop() + self.pilha.pop())
def sub(self):
return self.pilha.append(self.pilha.pop() - self.pilha.pop())
def mult(self):
return self.pilha.append(self.pilha.pop() * self.pilha.pop())
def div(self):
return self.pilha.append(self.pilha.pop() / self.pilha.pop())
def imprimir(self):
return self.pilha
def topo(self):
return id(self.pilha[len(self.pilha)-1])
class Main():
a = Pilha()
while True:
os.system('cls' if os.name == 'nt' else 'clear')
print("_______________~<>~______________")
print(" NOTAÇÃO POLONESA REVERSA\n")
print(" [1] - Inserir Valor")
print(" [2] - Somar")
print(" [3] - Subtrair")
print(" [4] - Multiplicar")
print(" [5] - Dividir")
print(" [0] - Sair")
if len(a.pilha) > 0:
stack = a.topo()
print("\n Pilha:",a.imprimir())
print("\n Stack Pointer: %i" %stack)
print("_______________~<>~______________")
op = int(input(" Escolha uma opção: "))
if op == 1: #inserir
if len(a.pilha) < 8:
a.adicionar(int(input(" Digite um valor: ")))
elif op == 2: #somar
if len(a.pilha) > 1:
a.soma()
elif op == 3: #subtracao
if len(a.pilha) > 1:
a.sub()
elif op == 4: #multiplicacao
if len(a.pilha) > 1:
a.mult()
elif op == 5: #divisao
if len(a.pilha) > 1:
a.div()
elif op == 0: #sair
break;