Avem de administrat eficient o parcare de mașini cu n locuri. Fiecare loc de parcare poate fi liber (0) sau ocupat cu o mașină (1). Vom considera un șir de n biți pentru a gestiona toate locurile din parcare, adică k = [n/8]+1 octeți care se vor memora printr-un tablou de k elemente de tip byte (definit ca unsigned char). Să se implementeze funcțiile:
int SET_CAR(int pos, byte p[], int n);
Încearcă să parcheze o mașină în poziția pos. Dacă locul de parcare este liber, îl marchează cu 1 și întoarce valoarea 1, dacă locul de parcare nu este liber, nu marchează locul și întoarce 0.
int SET_NEXT_CAR(byte p[], int n);
Parchează mașina pe primul loc liber din parcare. Întoarce poziția pe care a fost parcată mașina (un număr între 1 și n). Dacă nu s-a găsit loc liber, se returnează -1.
int RESET_CAR(int pos, byte p[], int n);
Eliberează locul de parcare din poziția pos; întoarce 1 dacă locul era ocupat și a fost eliberat; întoarce -1 dacă locul era liber.
int COUNT_CAR(byte p[], int n);
Numără câte mașini sunt parcate.
Să se scrie o funcție main care primește un număr n, inițializează o parcare goală, apoi primește p comenzi de forma (cod operație, parametru):
0 pos - pentru SET_CAR 1 - pentru SET_NEXT_CAR 2 pos - pentru RESET_CAR
și care afișează pe ecran rezultatul fiecărei operații, iar la final numărul de locuri libere din parcare.