# - 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 

        

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: