using namespace std; #include #include #include #include "commands_queue.h" #include "struct_stack.h" void inizializza_coda (queue & q, char * filein); void esegui_comando (command * cmd, stack & s); int main (int argc, char * argv[]) { fstream myin; command * cmd; queue q; stack s; if (argc!=2) { cout << "Usage: ./a.out \n"; exit(0); } init(q); init(s); inizializza_coda(q, argv[1]); cout << "Print queue: \n"; print(q); while (dequeue(cmd, q)) { esegui_comando(cmd, s); } } void inizializza_coda (queue & q, char * filein) { fstream myin; myin.open(filein,ios::in); char tmp; command * cmd; while (myin >> tmp) { cmd = new command; cmd->c = tmp; myin >> cmd->i; if (enqueue(cmd,q)==FAIL) cout << "Memoria esaurita!\n"; } myin.close(); } void esegui_comando (command * cmd, stack & s) { int val; switch (cmd->c) { case 'u': cout << "Push: " << cmd->i << endl; if (push(cmd->i,s)==FAIL) cout << "Memoria esaurita!\n"; break; case 'o': cout << "Pop " << endl; if (pop(s)==FAIL) cout << "Stack vuoto!\n"; break; case 't': cout << "Top: "; if (top(val,s)==FAIL) cout << "\nStack vuoto!\n"; else cout << val << endl; break; case 'p': cout << "Print stack: \n"; print(s); break; case 'f': break; default: cout << "Opzione errata\n"; } }