Recap: Task Manager
Combină malloc/free, enum-uri și typedef
Misiune: Coada de Intervenții Tehnice
Un incendiu de scurtcircuit a scos din funcțiune jumătate din sala de calcul. Tehnicianul de tură are nevoie de un tracker dinamic de sarcini pentru a gestiona lucrările de reparații. Fiecare sarcină este alocată pe heap, are un status și trebuie eliberată când coada este golită.
- Definește typedef enum { DE_FACUT, IN_LUCRU, GATA } Status;
- Definește typedef struct { char titlu[100]; Status status; } Sarcina;
- Scrie Sarcina *creeaza_sarcina(const char *titlu): alocă o Sarcina cu malloc, copiază titlul, setează statusul la DE_FACUT, returnează pointerul
- Scrie void actualizeaza_status(Sarcina *s, Status st): actualizează statusul sarcinii
- Scrie const char *nume_status(Status st): returnează "DE_FACUT", "IN_LUCRU" sau "GATA" (folosește un switch)
- Scrie void afiseaza_sarcina(Sarcina *s): afișează sarcina ca "[STATUS] Titlu"
- Citește din input un număr n de sarcini, urmat de n linii, fiecare cu un titlu (un singur cuvânt) și un cod de status (0 = DE_FACUT, 1 = IN_LUCRU, 2 = GATA). Creează fiecare sarcină și actualizeaz-o la statusul citit
- Afișează toate sarcinile, în ordine, apoi eliberează memoria
Exemplu
Intrare
3
Verifica_banda 2
Repara_teletip 1
Recalibreaza_cititor 0
Ieșire
[GATA] Verifica_banda
[IN_LUCRU] Repara_teletip
[DE_FACUT] Recalibreaza_cititor
Exemplu
Intrare
2
Inlocuieste_siguranta 2
Curata_ventilatoare 0
Ieșire
[GATA] Inlocuieste_siguranta
[DE_FACUT] Curata_ventilatoare