Ministério da Educação
Brasil um país de todos
Personal tools
You are here: Home Members Marcelo Gama da Silva Matemática Discreta - 2011.2 pilha.py
Navigation
Log in


Forgot your password?
 
Document Actions

pilha.py

by Marcelo Gama da Silva last modified 2011-10-26 07:22

Click here to get the file

Size 2.3 kB - File type text/python-source

File contents

# ----------------------------------------------------------------------
# Funcao da questao 3 do teste 2 (BSI-2011.2)
# ----------------------------------------------------------------------

def pilha(n):
    q = n            # Esse numero sera modificado durante a execucao
    algarismos = []  # Lista que vai armazenar os algarismos de n
    empilhados = []  # Lista de algarismos empilhados

    # Armazenando os algarismos de n na lista
    if q==0:
        algarismos.append(q)  # append adiciona um elemento no final da lista
    else:
        while q!=0: # Executar os comando a seguir ate que q seja zero
            algarismos.insert(0, q%10)  # q%10 (q mod 10) = algarimos das unidades
                                        # sera inserido no inicio da lista
            q = q/10 # A divisao inteira por 10 corta o ultimo algarismo de q.


    # Empilhar e desempilhar: Nao nulo empilha; nulo desempilha
    for i in range(len(algarismos)):
        if algarismos[i]!=0: # Algarismo nao nulo sera inserido no topo (inicio)
            empilhados.insert(0,algarismos[i])
        else:                     #Algarismo nulo...
            if len(empilhados)>0: # se a lista nao esta vazia...
                empilhados.pop(0) # retira o primeiro elemento
            else:                 # Mas, se a lista esta vazia...
                print n,
                print 'nao pertence ao dominio da funcao.'
                break # Encerra o processamento dos algarismos

    # No final, caso a lista esteja vazia, a imagem sera zero
    if len(empilhados)==0:
        print 'F(',
        print n,
        print ') = 0'
    else:
        print 'F(',
        print n,
        print ') = ',
        for i in range(len(empilhados)):
            print empilhados[i],



# ----------------------------------------------------------------------
# Processamento
# ----------------------------------------------------------------------

print '----------------------------------------------------------------------------'
print '                    *** FUNCAO EMPILHAR-DESEMPILHAR ***'
print '----------------------------------------------------------------------------'
n = raw_input("Informe o numero para que os blocos sejam empilhados/desempilhados: ")
print
pilha(int(n))











Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: