-
Notifications
You must be signed in to change notification settings - Fork 0
camistrate/Trenulet
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Pentru compilare: make build Pentru rulare: make run Pentru stergerea executabilelor create: make clean Programul creeaza un trenulet, care este reprezentat folosind o structura ce contine o lista dublu inlantuita circulara cu santinela (locomotiva) cu vagoanele inscriptionate cu elemente de tip caracter si adresa vagonului în care se află mecanicul. Pe acest trenulet se pot efectua mai multe operatii. Dupa rularea programului, se va initializa locomotiva (prin apelul functiei init_lcm) si primul vagon din tren, in care se afla mecanicul. Apoi, se va apela functia pentru citirea si executarea comenzilor. citire_comenzi: -deschide fisierele de input si output -apeleaza functia care initializeaza coada pentru comenzi (init_coada) -citeste din fisier numarul de comenzi si fiecare comanda in parte -verifica pentru fiecare comanda ce tip de functie este (functie care se adauga in coada sau functie care se executa pe loc - SHOW, SHOW_CURRENT, SWITCH, EXECUTE) -pentru functiile care se executa pe loc, se apeleaza functia corespunzatoare acesteia, dar daca functia este cea EXECUTE, se apeleaza functia corespunzatoare primei comenzi din coada, dupa care comanda din coada este eliminata prin apelul functiei dequeue -celelalte functii sunt adaugate in coada prin apelul functiei engueue -dupa citirea si executarea comenzilor din fisier, se inchid ambele fisiere. functii: show: -se afiseaza de la locomotiva spre ultimul vagon fiecare valoare corespunzatoare vagonului curent, avand in vedere evidentierea vagonului in care se afla mecanicul show_current: -se afiseaza valoarea corespuncatoare vagonului in care se afla mecanicul switch_coada: -inverseaza legaturile pentru fiecare element din coada -inverseaza inceputul cozii cu sfarsitul move_right: -daca mecanicul se afla pe ultimul vagon, se va adauga un nou vagon la tren inscriptionat cu valoarea "#" -muta mecanicul pe urmatorul vagon move_left: -daca mecanicul se afla in primul vagon, mecanicul se va muta pe ultimul vagon din tre, altfel se va muta pe vagonul anterior wirte: -schimba inscriptionarea de pe vagonul in care se afla mecanicul clear_cell: -daca trenul are un singur vagon, trenul revine la starea initiala (vagonul va avea acum inscriptia "#") -daca mecanicul se afla in primul vagon, se va elimina acest vagon, iar mecanicul o sa fie mutat in ultimul vagon -altfel, se va elimina vagonul in care se afla mecanicul, iar mecanicul o sa fie mutat pe vagonul de dinaintea celui eliminat -cand se elimina un vagon, se elibereaza memoria ocupata de acesta clear_all: -se porneste din primul vagon al trenului si se elimina fiecare vagon, pana cand ramane unul singur -cand se elimina un vagon, se elibereaza memoria ocupata de acesta -mecanicul se muta pe vagonul ramas, care ia inscriptia "#" insert_right: -se aloca memorie pentru un nou vagon -se verifica daca mecanicul se afla in ultimul vagon sau nu si se efectueaza legaturile specifice fiecarui caz -mecanicul este mutat pe vagonul nou inserat (se muta la dreapta) insert_left: -se aloca memorie pentru un nou vagon -daca mecanicul se afla in primul vagon, se afiseaza in fisierul pentru output mesajul "ERROR", se elibereaza memoria alocata pentru vagonul nou, iar mecanicul isi va pastra pozitia -altfel, se creeaza legaturile necesare pentru adaugarea vagonului nou la stanga mecanicului, dupa care acesta este mutat pe noul vagon (se muta la stanga) search: -daca trenul are un singur vagon, verificam daca sirul cautat are un singur caracter, care e acelasi cu cel de pe vagon, mecanicul isi pastreaza pozitia, altfel se afiseaza in fisiserul de output mesajul "ERROR" si mecanicul isi pastreaza pozitia. executia functiei ia sfarsit -altfel, cu ajutorul a doi pointeri catre vagoane verificam daca se gaseste sirul cautat -daca sirul a fost gasit, mecanicul este mutat pe vagonul care reprezinta prima pozitie din sir, altfel se afiseaza in fisiserul de output mesajul "ERROR" si mecanicul isi pastreaza pozitia search_left: -se cauta incepand cu mecanicul, catre stanga, pana se intalnese locomotiva -cu ajutorul a doi pointeri catre vagoane verificam daca se gaseste sirul cautat -daca sirul este gasit, mecanicul este mutat in vagonul inscriptionat cu ultimul caracter din sir, altfel se afiseaza in fisiserul de output mesajul "ERROR" si mecanicul isi pastreaza pozitia search_right: -se cauta incepand cu mecanicul, catre dreapta, pana se intalnese locomotiva -cu ajutorul a doi pointeri catre vagoane verificam daca se gaseste sirul cautat -daca sirul este gasit, mecanicul este mutat in vagonul inscriptionat cu ultimul caracter din sir, altfel se afiseaza in fisiserul de output mesajul "ERROR" si mecanicul isi pastreaza pozitia enqueue: -functie care adauga un element in coada dequeue: -functie care elimina un element din coada si elibereaza memoria ocupata de acesta
About
Programul creeaza un trenulet, care este reprezentat folosind o structura ce contine o lista dublu inlantuita circulara cu santinela.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published