Naloge - 6. dan
Naloga
a) Napiši program sklad.c za delo s skladom celih števil; program naj vsebuje funkcije init(), push(int x), pop() in isEmpty(). Funkcije main() tukaj ni.
b) Napiši interaktiven program testSklada.c, ki bo omogočal testiranje uporabe sklada. Program naj na zaslon izpiše seznam ukazov:
0 - konec programa
1 - dodaj element na sklad
2 - briši element s sklada
3 - izpiši vsebino sklada
nato naj počaka na uporabnikov vnos in primerno ukrepa.
c) Prilagodi funkcije v datoteki sklad.c tako, da bo program omogočal delo z več skladi hkrati. Program testSklada.c popravi tako, da bo najprej uporabnika vprašal, koliko skladov želi uporabljati, nato pa bo uporabniku omogočal, da med temi skladi preklaplja (dodaj možnost 4 - preklopi med skladi).
Namig: sklad implementiraj kot strukturo, v kateri hraniš tabelo in indeks, ki označuje vrh sklada; tabelo ustvarite v funkciji init(), velikost naj bo podana v enem od parametrov te funkcije. Vse funkcije napiši tako, da poleg ostalih prejmejo en dodaten parameter - strukturo sklad.
Dodatna (neobvezna) naloga
Napiši program rpn.c, ki prejme računski izraz v obrnjenem poljskem zapisu (reverse polish notation) in izračuna njegovo vrednost.
Primeri:
izraz RPN rezultat ------------------------------------------------------------- (1+3)*4 1 3 + 4 * 16 ((3+1)*(5-1))^(7-5) 3 1 + 5 1 - * 7 5 - ^ 256 2*6+3*2+7 2 6 * 3 2 * + 7 + 25
Opomba: lahko predpostaviš, da so vse številke manjše od 10 (torej je številka ena števka).
Namig: uporabi funkcije za delo s skladom iz 1. naloge.