예제 #1
0
def parrafo(cadena):
    pv = Pila()
    pc = Pila()
    po = Pila()
    pila_aux = Pila()
    cc = 0
    cv = 0
    co = 0
    ce = 0
    cn = 0
    cadena = cadena.lower()
    hay_z = 0
    i = 0
    while cadena[i] != '.':
        if (cadena[i] == 'a') or (cadena[i] == 'e') or (cadena[i] == 'i') or (cadena[i] == 'o') or (cadena[i] == 'u'):
            apilar(pv, cadena[i])
        else:
            aux = ord(cadena[i])
            if aux in range(97, 123):
                if aux == 122:
                    hay_z += 1
                apilar(pc, cadena[i])
            else:
                apilar(po, cadena[i])
        i += 1
    while not pila_vacia(pc):
        apilar(pila_aux, desapilar(pc))
        cc += 1
    while not pila_vacia(pila_aux):
        apilar(pc, desapilar(pila_aux))
    while not pila_vacia(pv):
        apilar(pila_aux, desapilar(pv))
        cv += 1
    while not pila_vacia(pila_aux):
        apilar(pv, desapilar(pila_aux))
    while not pila_vacia(po):
        aux = desapilar(po)
        aux = ord(aux)
        if aux == 32:
            ce += 1
        if aux in range(48, 58):
            cn += 1
        co += 1
        aux = chr(aux)
        apilar(pila_aux, aux)
    while not pila_vacia(pila_aux):
        apilar(po, desapilar(pila_aux))
    print("Cantidad de vocales: ", cv)
    print("Cantidad de consonantes: ", cc)
    print("Cantidad de caracteres especiales: ", co)
    print("Cantidad de numeros: ", cn)
    print("Cantidad de espacios: ", ce)
    porcentaje = (cv*100)/cc
    print("Porcentaje de vocales con respecto a consonantes: ", porcentaje)
    if hay_z > 0:
        print("Hay almenos una z")
    if co == cv:
        print("la cantidad de otros caracteres y las vocales son iguales")
    else:
        print("la cantidad de otros caracteres y las vocales no son iguales")
예제 #2
0
def temperatura():
    p = Pila()
    p_aux = Pila()
    sum = 0
    c_encima = 0
    c_debajo = 0
    for i in range(0, 30):
        apilar(p, random.randint(15, 27))
    max = desapilar(p)
    min = max
    apilar(p, max)
    while not pila_vacia(p):
        aux = desapilar(p)
        sum = sum + aux
        if aux < min:
            min = aux
        if aux > max:
            max = aux
        apilar(p_aux, aux)
    media = sum/30
    while not pila_vacia(p_aux):
        aux = desapilar(p_aux)
        if aux > media:
            c_encima += 1
        elif aux < media:
            c_debajo += 1
        apilar(p, aux)
    print("Valor maximo de temperatura: ", max)
    print("Valor minimo de temperatura: ", min)
    print("Promedio del total de los valores: ", media)
    print("Valores por encima de la media: ", c_encima)
    print("Valores por debajo de la media: ", c_debajo)
    print("Lista de los valores: ")
    barrido(p)
예제 #3
0
def cartas():
    p = Pila()
    po = Pila()
    pb = Pila()
    pe = Pila()
    pc = Pila()
    palos = ['Oro', 'Basto', 'Copa', 'Espada']
    for i in range(1, 40):
        num = random.randint(1, 13)
        palo = random.choice(palos)
        apilar(p, [num, palo])
    while not pila_vacia(p):
        aux = desapilar(p)
        if aux[1] == "Basto":
            apilar(pb, aux)
        if aux[1] == "Copa":
            apilar(pc, aux)
        if aux[1] == "Oro":
            apilar(po, aux)
        if aux[1] == "Espada":
            apilar(pe, aux)
    print("Mazo de basto")
    barrido(pb)
    print("Mazo de copa")
    barrido(pc)
    print("Mazo de oro")
    barrido(po)
    print("Mazo de espada")
    barrido(pe)
    pe = ordenar_pila(pe)
    print("Mazo de espada ordenados")
    barrido(pe)
예제 #4
0
def ordenados():
    p = Pila()
    p_aux = Pila()
    aux = 0
    elemento = input("Ingrese el elemento (-100 para no cargar mas): ")
    int(elemento)
    while (elemento != -100):
        if pila_llena(p):
            print("No hay mas espacio")
        else:
            if pila_vacia(p):
                apilar(p, elemento)
            else:
                aux = desapilar(p)
                while elemento < aux and not pila_vacia(p):
                    apilar(p_aux, aux)
                    aux = desapilar(p)
                else:
                    if elemento < aux:
                        apilar(p, elemento)
                        apilar(p, aux)
                    else:
                        apilar(p, aux)
                        apilar(p, elemento)
                if not pila_vacia(p_aux):
                    while not pila_vacia(p_aux):
                        apilar(p, desapilar(p_aux))
            elemento = input("Ingrese el elemento (-100 para no cargar mas): ")
            int(elemento)
    barrido(p)
예제 #5
0
def robot():
    pila_robot = Pila()
    p_aux = Pila()
    direcciones = ["norte", "sur", "este", "oeste", "noreste", "noroeste", "sureste", "suroeste"]
    num_al = random.randint(5, 50)
    for i in range(1, num_al):
        apilar(pila_robot, random.choice(direcciones))
    print("Ida")
    barrido(pila_robot)
    while not pila_vacia(pila_robot):
        aux = desapilar(pila_robot)
        if aux == "norte":
            apilar(p_aux, "sur")
        if aux == "sur":
            apilar(p_aux, "norte")
        if aux == "este":
            apilar(p_aux, "oeste")
        if aux == "oeste":
            apilar(p_aux, "este")
        if aux == "norte":
            apilar(p_aux, "sur")
        if aux == "noreste":
            apilar(p_aux, "suroeste")
        if aux == "noroeste":
            apilar(p_aux, "sureste")
        if aux == "sureste":
            apilar(p_aux, "noroeste")
        if aux == "suroeste":
            apilar(p_aux, "noreste")
    while not pila_vacia(p_aux):
        apilar(pila_robot, desapilar(p_aux))
    print("")
    print("vuelta")
    barrido(pila_robot)
예제 #6
0
def fibonacci(valor):
    p = Pila()
    p_aux = Pila()
    apilar(p, 0)
    apilar(p, 1)
    for i in range(1, valor):
        f1 = desapilar(p)
        f0 = desapilar(p)
        aux = f1 + f0
        apilar(p, f0)
        apilar(p, f1)
        apilar(p, aux)
    print("Fibonacci de: ", valor)
    barrido(p)
예제 #7
0
def pares_impares(p):
    pila_pares = Pila()
    pila_impares = Pila()
    while not pila_vacia(p):
        aux = desapilar(p)
        if (aux % 2) == 0:
            apilar(pila_pares, aux)
        else:
            apilar(pila_impares, aux)
    print("Pila de pares:   --INICIO--")
    barrido(pila_pares)
    print("Pila de pares:    --FIN--")
    print("Pila de impares:     --INICIO--")
    barrido(pila_impares)
    print("Pila de impares:      --FIN--")
예제 #8
0
def restringir_valores():
    p = Pila()
    p_aux = Pila()
    for i in range(0, 9999):
        apilar(p, random.randint(0, 800))
    print("Lista de valores: ")
    barrido(p)
    while not pila_vacia(p):
        aux = desapilar(p)
        if (aux % 2 == 0) or (aux % 3 == 0) or (aux % 5 == 0):
            apilar(p_aux, aux)
    while not pila_vacia(p_aux):
        apilar(p, desapilar(p_aux))
    print("")
    print("Lista de valores que son multiplos de 2, 3 o 5")
    barrido(p)
예제 #9
0
def eliminar_elemento(p, pos):
    pila_aux = Pila()
    for i in range(0, pos):
        apilar(pila_aux, desapilar(p))
    desapilar(p)
    while not pila_vacia(pila_aux):
        apilar(p, desapilar(pila_aux))
예제 #10
0
def factorial(num):
    p = Pila()
    aux = 1
    for i in range(1, num+1):
        apilar(p, i)
    while not pila_vacia(p):
        aux = aux*desapilar(p)
    print('El factorial de ', num, 'es', aux)
예제 #11
0
def palabras():
    serie_palabras = ["Guitarra", "Fotocopia", "Roedor", "Fecha", "Batir", "Horno", "Compartimiento", "Amazona", "Tabaco"]
    p = Pila()
    p_aux = Pila()
    for i in range(0, len(serie_palabras)):
        apilar(p, serie_palabras[i])
    print("Palabras con mas de 7 caracteres")
    while not pila_vacia(p):
        aux = desapilar(p)
        if len(aux) > 7:
            print(aux)
        apilar(p_aux, aux)
    while not pila_vacia(p_aux):
        apilar(p, desapilar(p_aux))
    print("")
    print("Lista de palabras")
    barrido(p)
예제 #12
0
def invertir(p):
    pila_aux = Pila()
    print('Pila original: ')
    barrido(p)
    while not pila_vacia(p):
        apilar(pila_aux, desapilar(p))
    print('Pila invertida: ')
    barrido(pila_aux)
예제 #13
0
def objetos_oficina():
    objetos = ["escritorio", "silla", "teclado", "mouse", "monitor", "gabinete"]
    peso = [10.5, 5, 0.800, 0.400, 2.5, 5]
    pila_oficina = Pila()
    for i in range(0, len(objetos)):
        apilar(pila_oficina, [peso[i], objetos[i]])
    pila_ordenada = ordenar_pila(pila_oficina)
    print('Pila ordenada')
    barrido(pila_ordenada)
예제 #14
0
def palabra_invertida(cadena):
    p = Pila()
    aux = len(cadena)
    cadena_aux = ''
    for i in range(0, aux):
        car = cadena[i]
        apilar(p, car)
    while not pila_vacia(p):
        cadena_aux = cadena_aux + desapilar(p)
    print(cadena_aux)
예제 #15
0
def pila_pares(p):
    pila_aux = Pila()
    aux = 0
    while not pila_vacia(p):
        aux = desapilar(p)
        if (aux % 2) == 0:
            apilar(pila_aux, aux)
    while not pila_vacia(pila_aux):
        apilar(p, desapilar(pila_aux))
    print('Pila con pares: ')
    barrido(p)
예제 #16
0
def palindromo(cadena):
    p = Pila()
    aux = len(cadena)
    cadena_aux = ''
    for i in range(0, aux):
        car = cadena[i]
        apilar(p, car)
    while not pila_vacia(p):
        cadena_aux = cadena_aux + desapilar(p)
    if cadena == cadena_aux:
        print("la palabra es palindromo")
예제 #17
0
def ordenar_pila(p):
    aux = Pila()
    while not pila_vacia(p):
        cont = 0
        dato = desapilar(p)
        while not pila_vacia(aux) and (cima(aux) >= dato):
            apilar(p, desapilar(aux))
            cont += 1
        apilar(aux, dato)
        for i in range(0, cont):
            apilar(aux, desapilar(p))
    return aux
예제 #18
0
def reemplazar_ocurrencias(p, elemento):
    c = 0
    aux = 0
    pila_aux = Pila()
    while not pila_vacia(p):
        aux = desapilar(p)
        if elemento == aux:
            c += 1
            aux = int(input("Ingrese un numero para reemplazar la ocurrencia"))
        apilar(pila_aux, aux)
    while not pila_vacia(pila_aux):
        apilar(p, desapilar(pila_aux))
    if c == 0:
        print("El elemento no existe en la pila")
예제 #19
0
def ocurrencias(p, elemento):
    c = 0
    aux = 0
    pila_aux = Pila()
    while not pila_vacia(p):
        aux = desapilar(p)
        if elemento == aux:
            c += 1
        apilar(pila_aux, aux)
    while not pila_vacia(pila_aux):
        apilar(p, desapilar(pila_aux))
    if c == 0:
        print("El elemento no existe en la pila")
    else:
        print("La cantidad de ocurrencias del elemento son: ", c)
def dijkstra(grafo, origen, destino):
    """Algoritmo de Dijkstra para hallar el camino mas corto."""
    no_visitados = Heap(tamanio(grafo))
    camino = Pila()
    aux = grafo.inicio
    while (aux is not None):
        if (aux.info == origen):
            arribo_h(no_visitados, [aux, None], 0)
        else:
            arribo_h(no_visitados, [aux, None], inf)
        aux = aux.sig

    while (not heap_vacio(no_visitados)):
        dato = atencion_h(no_visitados)
        apilar(camino, dato)
        aux = dato[1][0].adyacentes.inicio
        while (aux is not None):
            pos = buscar_h(no_visitados, aux.destino)
            if (no_visitados.vector[pos][0] > dato[0] + aux.info):
                no_visitados.vector[pos][1][1] = dato[1][0].info
                cambiar_prioridad(no_visitados, pos, dato[0] + aux.info)
            aux = aux.sig
    return camino
예제 #21
0
from tda_pila_dinamico import Pila, pila_vacia, desapilar, apilar, tamanio, cima
from random import randint, choice

pila = Pila()
pilaaux = Pila()
pilapar = Pila()
pilaimpar = Pila()
mazo = Pila()

palos = ['espada', 'basto', 'copa', 'oro']

while (tamanio(mazo) < 40):
    dato = ['', 0]
    dato[0] = choice(palos)
    dato[1] = randint(1, 12)
    apilar(mazo, dato)

while (not pila_vacia(mazo)):
    print(desapilar(mazo))
'''
dato = int(input('ingrese un numero '))
while dato != 0:
    if(pila_vacia(pila)):
        apilar(pila, dato)
    else:
        if(cima(pila) <= dato):
            apilar(pila, dato)
        else:
            while(not pila_vacia(pila) and cima(pila) > dato):
                daux = desapilar(pila)
                apilar(pilaaux, daux)
from tda_pila_dinamico import Pila, pila_vacia, desapilar, apilar, tamanio, cima
from random import randint


class Carta():
    def __init__(self):
        self.numero = None
        self.palo = None


pila = Pila()

carta = Carta()
carta.numero = int(input('ingrese el numero de la carta'))
carta.palo = input('ingrese el palo de la carta')

apilar(pila, carta)

dato = desapilar(pila)
print(dato.numero, dato.palo)
'''
pila_personajes = Pila()

archivo = open('personajes')

linea = archivo.readline()

print('archivo')
while linea:
    linea = linea.replace('\n', '')
    linea = linea.split(';')
예제 #23
0
from tda_pila_dinamico import carga_automatica, Pila, barrido, apilar, carga_automatica_letras
from pila_unit_dinamico import pila_pares, invertir, palindromo, ocurrencias
from pila_unit_dinamico import reemplazar_ocurrencias, palabra_invertida
from pila_unit_dinamico import eliminar_elemento, factorial, pares_impares, vocales
from pila_unit_dinamico import ordenados, cartas, parrafo, objetos_oficina, robot
from pila_unit_dinamico import fibonacci, temperatura, palabras, restringir_valores


p = Pila()
pl = Pila()
carga_automatica(p)
carga_automatica_letras(pl)


# EJERCICIO 1
# barrido(p)
# num = int(input("Ingrese el numero a evaluar: "))
# ocurrencias(p, num)
# barrido(p)

# EJERCICIO 2
# barrido(p)
# pila_pares(p)

# EJERCICIO 3
# barrido(p)
# num = int(input("Ingrese el numero a evaluar: "))
# reemplazar_ocurrencias(p, num)
# barrido(p)