Vymyslel jsem to tak, že člověk zadá postupně po řádcích jakýsi svůj program a ten se bude rozdělovat do stacku a queue podle typu zápisu.
Vstup by pak mohl vypadat nějak takto:
Kód: Vybrat vše
$123 - proměnná 1
$456 - proměnná 2
$789 - proměnná 3
254 - instrukce (od teď čísla ukládat zpět na vrch stacku)
$3 - proměnná 4 (počet proměnných k součtu)
11 - instrukce (součet čísel)
10 - instrukce (výpis vršku stacku)
255 - instrukce (spustit zadaný program & vyprázdnit frontu s instrukcema)
255 - instrukce (zavřít konzoli -> protože ve frontě pro instrukce nic není)
V podstatě, všechna čísla která mají před sebou $, jsou data, která se vkládají do zásobníku, zbytek jsou příkazy.
Program mám zhruba hotov, jenom mi chybí nějak dokutit ten vstup.
Pseudo-kód:
Kód: Vybrat vše
dokud (1):
nacist vstup
pokud (vstup jsou data)
pridat do stacku
jinak pokud (vstup jsou instrukce)
pokud (instrukce je 255)
pokud (fronta neni prazdna)
spustit program
jinak
ukoncit
jinak
pridat do stacku instrukci
Interpret běží tak jak by měl, akorát mám problém s tím vstupem.
Udělal jsem pomocí scanf() ať se načítá znak a číslo, ale problém je že nechci vždycky načítat obojí.
Jakože používat jeden znak $ pro data a třeba & pro instrukce (v případě že to není možné se s tím smířím).
Zadání se mi doma válí už nějakou tu chvilku, tak sem si řekl že na to konečně vrhnu