# - Pilhas:
# Exercício 1 :
# Implemente uma pilha que possa verificar se uma expressão de parênteses está balanceada. Por exemplo:
# - Expressão balanceada:(a + b) * (c + d)
# - Expressão não balanceada:(a + b * (c + d)
class Pilha:
def __init__(self,):
self.itens = []
def esta_vazia(self):
return len(self.itens) == 0
def empilhar(self, item):
self.itens.append(item)
def desempilhar(self):
if not self.esta_vazia():
return self.itens.pop()
return None
def topo(self):
if not self.esta_vazia():
return self.itens [-1]
return None
def verificar_balanceamento(expressao):
pilha = Pilha()
mapeamento = {")": "(", "}": "{", "]": "["}
for caractere in expressao:
if caractere in "([{":
pilha.empilhar(caractere)
elif caractere in ")]}":
if pilha.esta_vazia() or pilha.desempilhar() != mapeamento[caractere]:
return False
return pilha.esta_vazia()
#Exemplos de uso:
expressao_balanceada = "(a + b) * (c + d)"
expressao_nao_balanceada = "(a + b * (c + d)"
expressao_com_chaves_e_colchetes = "{[()]}"
expressao_nao_balanceada_misturada = "([)]"
print(f"'{expressao_balanceada}' está balenceada {verificar_balanceamento(expressao_balanceada)}")
print(f"'{expressao_nao_balanceada}' está balanceada? {verificar_balanceamento(expressao_nao_balanceada)}")
print(f"'{expressao_com_chaves_e_colchetes}' está balanceada? {verificar_balanceamento(expressao_com_chaves_e_colchetes)}")
print(f"'{expressao_nao_balanceada_misturada}' está balanceada? {verificar_balanceamento(expressao_nao_balanceada_misturada)}")
# Exercício 2:
# Crie uma função que converte um número decimal em binário utilizando uma pilha.
# A entrada deve ser um número decimal e a saída deve ser uma string representando o número em binário.
class Pilha:
def __init__(self,):
self.itens = []
def esta_vazia(self):
return len(self.itens) == 0
def empilhar(self, item):
self.itens.append(item)
def desempilhar(self):
if not self.esta_vazia():
return self.itens.pop()
return None
def topo(self):
if not self.esta_vazia():
return self.itens [-1]
return None
def decimal_para_binario(decimal):
if decimal == 0
return "0"
pilha = Pilha()
while decimal > 0:
resto = decimal % 2
pilha.empilhar(resto)
decimal //= 2
binario
To embed this program on your website, copy the following code and paste it into your website's HTML: