import server mod = server.problems.load_language('python', 'sl') id = 224 name = 'Kalkulator v inverzni poljski notaciji' slug = 'Kalkulator v inverzni poljski notaciji' description = '''\

V inverzni poljski ali postfiksni notaciji ne potrebujemo oklepajev: računska operacija sledi številoma in se vedno izvede takoj ter zamenja predhodni števili in operacijo z rezultatom operacije. Poglejmo si računanje (3 + 5) * 2 - 10 * (2 - 1) ali postfiksno 3 5 + 2 * 10 2 1 - * -:

Napišite kalkulator s celoštevilskimi operacijami seštevanja, odštevanja, množenja, deljenja in izračunom ostanka, ki prejme vhod v inverzni poljski notaciji. Ko uporabnik ne poda ničesar (pritisne le enter), naj se program zaključi. Števila ter operande ločujte s presledkom.
Izraz: 3 5 +
Rezultat: 8

Izraz: 16 5 %
Rezultat: 1

Izraz: 16 5 /
Rezultat: 3

Izraz: 3 3 3 + +
Rezultat: 9

Izraz: 3 5 + 2 * 10 2 1 - * -
Rezultat: 6

Izraz:

''' stack = ['''\

Uporabi sklad, saj prebrano operacijo vedno izvajamo na zadnjih dveh številih.

''', '''\

Sklad je seznam, kjer se elementi vedno dodajajo in brišejo na koncu seznama. V Pythonovih seznamih imamo za ta namen metodi append in pop.

''' ] split = ['''\

Niz razbijemo na besede z metodo split

''', '''\
>>> izraz = '3 5 + 2 * 10 2'
>>> izraz.split()
['3', '5', '+', '2', '*', '10', '2']
''', '''\

Zanimivost, ki je ne potrebujete za to nalogo: če splitu damo znak v argument, bo razbil niz po tem znaku:

>>> b = 'brina,burja,miha;maja,maks'
>>> b.split(",")
>>> ['brina', 'burja', 'miha;maja', 'maks']
'''] plan = [stack, '''\
for zanka čez vse elemente (števila, operacije):
    če je element operacija:
        Iz sklada preberi zadnji dve vrednosti, izračunaj in postavi nazaj na sklad
    drugače postavi število na sklad
''', split] hint = { 'final_hint': ['''\

Program je pravilen!

'''], }