Data Structures 2017-2018

Planificare examene

  • Anul 2 RO-ZI: 15 Iunie 2018.
  • Anul 2 EN-ZI: 16 Iunie 2018.
  • Anul 2 RO-ID: 24 Iunie 2018..
  • Anul 3 EN-ZI, Anul Suplimentar EN-ZI: 7 Iunie 2018.
  • Anul 3 RO-ID, Anul Suplimentar RO-ID: 7 Iunie 2018.
  • Anul 3 RO-ZI, Anul Suplimentar RO-ZI: 9 Iunie 2018

Evaluare seminar - test pe calculator

Repartizare studenti ANUL 3/SUPLIMENTAR test pe calculator 6 MAI 2018

  • Duminica, 6 Mai 2018, ora 08:00: studentii repartizati la grupele 1040, 1041, 1042, 1043, 1044.
  • Duminica, 6 Mai 2018, ora 10:30: studentii repartizati la grupele 1045, 1046, 1047, 1048, 1049.
  • Duminica, 6 Mai 2018, ora 14:00: studentii repartizati la grupele 1050, 1051, 1052.

Testul va fi sustinut in laboratorul 2017 (parter, cladire CSIE).

Tematica test seminar la calculator:

  • Pointeri, Memorie, alocare memorie (la compilare, la executie).
  • Masive de date: Vectori, Matrice alocate static si dinamic.
  • Structuri de date liniare: Lista simpla, Lista dubla, Lista circulara, Stive, Cozi.
  • Tabele de dispersie.

Evaluarea de seminar (test pe calculator) va avea loc pe 22 Aprilie 2018 (anul 2) si 6 Mai 2018 (anul 3, an suplimentar).

Repartizare pe grupe a studentilor cu restanta

Repartizarea pe grupe a studentilor cu restanta la disciplina Structuri de Date este: RO, EN. Studentii vor sustine evaluarile pe parcurs la grupa la care au fost alocati.

Evaluare Structuri de date

      • Examen: 60%, din care:
        • 10% test cunostinte.
        • 50% test aplicativ la calculator.
      • Criteriu minim promovare: 30%.
      • Seminar: 40%, din care:
        • 40% teste cunostinte calculator/scris/oral.

Nota: procentele sunt exprimate relativ la nota finala.

Teme studiu individual

Pentru a asigura o pregatire serioasa a acestui curs si a examenului, studentii trebuie sa fie capabili sa scrie cu usurinta solutii C/C++ corecte (sintactic si functional) pentru urmatoarele module:

Lucru cu fisiere:

Considerand structura Produs utilizata in problemele cu liste sa se implementeze urmatoarele functii:

              • functie pentru scrierea unui vector de produse intr-un fisier binar cu acces direct (indicatie: fiecare camp dinamic are alocat in fisier un buffer de dimensiune fixa)
              • functie pentru scrierea unui vector de produse intr-un fisier binar secvential in care pentru fiecare camp dinamic se aloca un spatiu de dimensiune egala cu spatiul ocupat de valori in Heap;
              • functie pentru citirea unui vector de produse intr-un fisier binar (pentru ambele variante de stocare); vectorul se aloca dinamic dupa determinarea numarului de produse din fisier;
              • functie pentru scrierea unui vector de produse intr-un fisier text in care descrierea produsului se scrie pe o linie (formatare tip CSV);
              • functie pentru scrierea unui vector de produse intr-un fisier text in care fiecare atribut al produsului se scrie pe o linie;
              • functie pentru citirea vectorului de produse din fisierul text (pt. ambele variante de scriere)

Lucru cu liste:

Toate problemele sunt scrise pentru a gestiona date stocate in structura Produs:

struct Produs{
int id;
float pret;
char* denumire;
int* stocMagazine; //vectorul stocheaza numarul de produse de acest tip din fiecare magazin
};

              • functie pentru citirea unui Produs de la consola (cu validare): Student creareConsola() si void creareConsola(Student* adresaStud)
              • functie pentru afisarea la consola a unui Produs
              • functie pentru calculul stocului total al unui produs; functia intoarce un int
              • functie pentru crearea unui nod dintr-o lista simplu inlantuita si dublu inlantuita ce contine un Produs: nodListaSimpla* creareNodLS(Produs p) si nodListaDubla *creareNodLD(Produs p)
              • functie pentru inserarea unui Produs intr-o lista simplu inlantuita si dublu inlantuita: la inceput si la sfarsit
              • functie pentru afisarea unei liste simplu inlantuite si dublu inlantuite ce contine Produse
              • functie pentru inserarea unui Produs intr-o lista simplu inlantuita astfel incat lista sa se mentina sortata dupa denumirea produselor; lista este circulara;
              • functie pentru stergerea unui Produs dintr-o lista simplu inlantuita si dublu inlantuita (cautare dupa id)
              • functie pentru stergerea totala a unei liste simplu/dublu inlantuita cu eliberarea memoriei
              • functii pentru inserare si stergere produse dintr-o lista considerata STIVA
              • functie pentru crearea unui vector ce contine stocul total pentru fiecare Produs din lista simplu inlantuita: int* raportStoc(nodListaSimpla* capat, int * nrProduse)

Lucru cu masive unidimensionale:

              • functie pentru crearea unui masiv dinamic de la consola (numarul de elemente este dat, iar valorile sunt citite de la consola): int* creareConsola(int nrElemente) si void creareConsola2(int** vector, int nrElemente)
              • functie pentru crearea unui masiv dinamic de la consola (numarul de elemente este citit in functie): int* creareConsola(int* nrElemente) si void creareConsola2(int** vector, int* nrElemente)
              • functie pentru crearea unui masiv dinamic pe baza unui vector existent: int* copiereVector(int* existent, int nrElemente)
              • functie pentru afisarea unui mesiv la consola: void afisareVector(int* vector, int nrElemente)
              • functii pentru prelucrari matematice: suma elementelor, suma elementelor negative, suma elementelor pozitive, media aritmetica si geometrica a elementelor, determinarea minimului, determinarea maximului. Acestea vor avea forma: [tip returnat] numeFunctie(int* vector, int nrElemente); functiile trebuie sa trateze si cazul particular cand vectorul primit nu exista;
              • functii pentru prelucrari matematice pe baza unei valori date: determinarea existentei unei valori in vector, determinarea numarului de valori mai mari/mai mici decat o valoare data, determinarea primei aparitii in vector a unei valori date, determinarea numarului de aparitii pentru o valoare data. Acestea vor avea forma: [tip returnat] numeFunctie(int* vector, int nrElemente int valoare)
              • functii pentru sortare a elementelor: bule, interschimbare si selectie;
              • functie pentru adaugarea unui element nou la un vector existent: int* adauga(int* vector, int* nrElemente, int valoare) si void adauga2(int** vector, int * nrElemente, int valoare)
              • functie pentru dezalocarea unui vector existent: void dezlocare(int* vector)

Solutiile nu trebuie sa aiba erori de sintaxa si toate functiile trebuie sa fie testate in main(). Aceste teme nu conteaza la evaluarea finala si reprezinta un mecanism de motivare si autoevaluare a studentului care doreste sa se pregateasca temeinic pentru examen. Copierea acestor solutii genereaza o falsa impresie de cunoastere a conceptelor, lucru care este evidentiat la examen.

Lucrare Structuri de date

Cunostinte evaluate prin proba practica:

Aplicatii suport pentru seminar

Bibliografie

Sursele principale pentru pregatirea examenului sunt resursele bibliografice [IVAN08a] si [IVAN08b]. Minimum se citeste si se implementeaza in programe scrise, compilate si rulate pe calculator urmatoarele capitole:

        • Structuri de date omogene - pg 83-109, vol. 1
        • Functii de prelucrare cu masive - pg 147-184, vol. 1
        • Matrice rare - pg 200-231, vol. 1
        • Liste - pg 351-368, vol. 1
        • Stive si cozi - pg 369-390, vol. 1
        • Tabele de dispersie - pg 572-592, vol. 1
        • Structura Heap - pg 499-518, vol. 1
        • Arbori de cautare - pg 401-415, vol. 1
        • Arbori echilibrati - AVL - pg 452-481, vol. 1
        • Arbori B - pg 416-447, vol. 1
        • Grafuri - pg 519-555, vol. 1
        • STL - Standard Template Library - pg 27-50, vol. 2
        • Conversii structuri de date - pg 51-88, vol. 2
        • Compactare - compresie - pg 122-147, vol. 2
        • Structuri de date in securizarea informatiilor - pg 354-374, vol. 2
        • Gradul de ocupare a zonei de memorie - pg 390-406, vol. 2
        • Modelul de date XML - pg4 94-508, vol. 2
        • [****09] www.itcsolutions.eu
        • [****04] www.structuri-de-date.ase.ro
        • [IVAN08a] Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date volumul 1, Editura ASE, 2008
        • [IVAN08b] Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date volumul 2, Editura ASE, 2008
        • [IVAN92] Ion IVAN, Romica ADAM - Structuri de date - curs litografiat, Lito. ASE, Bucuresti, 1992.
        • [IVAN92] Ion IVAN, Romica ADAM - Structuri de date - culegere de probleme, Lito. ASE, Bucuresti, 1992.
        • [IVAN04] Ion IVAN, Marius POPA, Cristian IONITA, Catalin BOJA, Adrian POCOVNICU, Daniel MILODIN - Practica dezvoltarii software orientata pe structuri de date, Editura ASE, Bucuresti, 2004.
        • [NEGR96] Liviu NEGRESCU - Limbajele C/C++ pentru incepatori, Ed. Microinformatica, Cluj, 1996.
        • [SMEU95] Ion SMEUREANU, Ion IVAN, Marian DARDALA - Limbajul C++ prin exemple, Editura Cison, 1995.
        • [SMEU98] Ion SMEUREANU, Ion IVAN, Marian DARDALA - Structuri si obiecte n C++, Editura Cison, 1998.
        • [SMEU01] Ion SMEUREANU, Marian DARDALA - Programarea in limbajul C/C++, Editura Cison, 2001.
        • [SMEU02] Ion SMEUREANU, Marian DARDALA - Programarea orientata obiect in limbajul C++, Editura Cison, 2002.