You are on page 1of 1

Test Practic Programarea Calculatoarelor Nume: ____________________ Grupa: ____________________ Punctaj: ___________________ Observatii: Testul practic dureaza 55 de minute.

. Sunt strict interzise in timpul testului practic:


folosirea de medii externe de stocare (de exemplu, stick-uri USB) accesul la Internet (asigurat de catre asistent) folosirea telefoanelor Ca documentatie, aveti voie sa consultati documentatia existenta pe calculatorul local (de ex., paginile de manual Linux pentru antetele functiilor din biblioteca standard C). Testul cuprinde un numar de 4 sau 5 cerinte ce trebuie rezolvate in ordine. In arhiva de test vesti gasi urmatoarele fisiere care NU trebuie modificate. Chiar daca le veti modifica, corectarea se va face folosind fisierele originale: eval.sh: Scriptul de evaluare. Makefile: Un fisier de Makefile care va asambla rezolvarea voastra in-un executabil si ii va testa corectitudinea. main.o: Un fisier obiect compilat care va contine logica de evaluare a functiilor scrise de voi. *.ref: Diferite fisiere folosire in cadrul evaluarii. *.h: Un fisier header. In acest fisier aveti gata scrise cateva definitii de structuri si de functii pe care sa le folositi. Va rugam sa consultati cu atentie acest fisier, dar nu modificati nimic in el. Arhiva va contine si un fisier sursa C in care va trebuie sa implementati rezolvarile. La orice moment de timp, puteti rula comanda make test pentru a afla cate puncte obtine rezolvarea voastra in mod curent.

Varianta 0: In fisierul bitset.h se afla definita o structura BitSet pentru o multime de numere naturale reprezentata de biti. Structura contine: v - adresa de inceput a vectorului de caractere care vor ingloba bitii multimii nr_bits - capacitatea de stocare a vectoruluide unsigned char, masurata in numarul de biti Task 1 (10p): Completati functia init() din bitset.c pentru a initializa un BitSet (o multime vida cu o alocare initiala de memorie egala cu Max = 32 biti). Task 2 (20p): Completati functia add() din BitSet pentru a adauga un element la mutime prin setarea bitului cu ordinul egal cu elementul pe 1 (elementele 0-7 in primul Byte, 8-15 in al doilea Byte, etc.). In cazul in care multimea nu are suficienti biti alocati, se va extinde/realoca mai intai vectorul pana la un numar cuprinzatori de biti. Atentie! Memoria nou alocata trebuie setata pe 0! Task 3 (20p): Completati functia contains() din bitset.c pentru a verifica daca un BitSet contine sau nu un element. Atentie! Este posibil ca in conditiile in care elementul nu se afla in multime, el sa nu se afle nici reprezentat in memoria alocata! Task 4 (30p): Completati functia write() din bitset.c pentru a scrie elementele dintr-un BitSet intr-un fisier text al carui nume este dat ca parametru. Elementele multimii se vor scrie cate unul pe linie. Task 5 (20p): Completati functia read() din bitset.c. Functia va crea un BitSet alocat dinamic, il va initializa, va citi succesiv de la tastatura elemente pe care le va adauga in svector pana la intalnirea lui EOF (CTRL + D in Linux), si apoi va returna pointerul catre structura BitSet.

You might also like