Example #1
0
def upor_vezja(niz):
    '''Izračuna upor vezja s pomočjo sklada.'''
    print(niz)
    sklad = Sklad()
    for znak in niz.split():
        if znak in 'VZ':
            drugiEl = sklad.poberi()
            prviEl = sklad.poberi()
            sklad.vstavi(nadomestni_upor(float(prviEl), float(drugiEl), znak))
        else:  # Imamo število
            sklad.vstavi(float(znak))
    return sklad.poberi()
Example #2
0
def vrednost_rpn(niz):
    '''Izračuna vrednost RPN izraza preko tega, da po dve števili shranjujemo v sklad.'''
    s = Sklad()
    for znak in niz.split():
        try:
            int(znak)
            s.vstavi(znak) # Število dodamo v sklad
        except:
            prvoSt = s.poberi()
            drugoSt = s.poberi()
            s.vstavi(str(eval(prvoSt + znak + drugoSt)))
    return int(s.poberi())
Example #3
0
def obicajni_zapis(izraz):
    '''Vrne običanji zapis računanja.'''
    sklad = Sklad()
    obicajni_izraz = ''
    for znak in izraz.split():
        try:
            int(znak)
            sklad.vstavi(znak) # Število dodamo v sklad
        except:
            drugiIzraz = sklad.poberi()
            prviIzraz = sklad.poberi()
            obicajni_izraz
            sklad.vstavi('({0} {1} {2})'.format(prviIzraz, znak, drugiIzraz))
    return sklad.poberi()
Example #4
0
def pregled_po_skladu(zacetno_drevo):
    '''pregleda drevo s skladom'''
    sklad = Sklad()
    sklad.vstavi(zacetno_drevo)
    while not sklad.prazen():
        drevo = sklad.poberi()
        if not drevo.prazno:
            sklad.vstavi(drevo.levo)
            sklad.vstavi(drevo.desno)
            yield drevo.podatek
Example #5
0
def oklepaji(niz):
    '''Preveri, ali so oklepaji pravilno gnezdeni. Uporaba sklada.'''
    sklad = Sklad()
    for znak in niz:
        if znak in OKLEPAJI:
            sklad.vstavi(znak)
        elif znak in OKLEPAJI.values():
            if sklad.prazen():
                return False
            if not OKLEPAJI[sklad.poberi()] == znak:
                return False
    if not sklad.prazen():
        return False
    return True
Example #6
0
def max_globina(niz):
    '''Poišče globino najbolj globoko gnezdenega para oklepajev.'''
    sklad = Sklad()
    globina = 0
    naj_globina = 0
    for znak in niz:
        if znak in OKLEPAJI:
            sklad.vstavi(znak)
            globina += 1
            if globina > naj_globina:
                naj_globina = globina
        elif znak in OKLEPAJI.values():
            if sklad.prazen():
                return None
            if not OKLEPAJI[sklad.poberi()] == znak:
                return None
            globina -= 1
    if not sklad.prazen():
        return None
    return naj_globina