Structuri de date 2022-2023

Planificare examene

  • 5 Iulie 2023
    • Ora 7:30, laborator 2013 - Anul 3 RO ZI, An suplimentar RO ZI, Anul 3 EN ZI, An suplimentar EN ZI, Anul 3 RO ID, An suplimentar RO ID
  • 8 Iulie 2023
    • Ora 7:30, laborator 2013 - Anul 2 RO ZI seria C, Anul 2 EN ZI, Anul 2 RO ID
    • Ora 13:30, laborator 2013 - Anul 2 RO ZI seriile D si E

Coduri de acces la online.ase.ro

  • conf. univ. dr. Marius Popa: curs: 4491, seminar RO: 1247, seminar EN: 7273.
  • conf. univ. dr. Mihai Doinea: curs EN: 3745, seminar EN: 8832, seminar RO: 9420.

Sustinere si promovare examen

Conditiile de sustinere si promovare a examenului sunt descrise in fisa disciplinei RO / EN.

 

Evaluare Structuri de date

  • Examen: 60%, test aplicativ la calculator.
  • Criteriu minim promovare: 30% (obtinerea a minim 1/2 din punctajul examenului).
  • Seminar: 40%, din care:
    • 20% activitate pe parcursul semestrului: teste orale sau scrise, teme, participare activa la seminar si la curs, etc.
    • 20% test la calculator.

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.

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
  • Marius POPA. Cristian CIUREA, Mihai DOINEA, Alin ZAMFIROIU, Structuri de date. Teorie si practica, Editura ASE, 2023
  • Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date volumul 1, Editura ASE, 2008
  • Ion IVAN, Marius POPA, Paul POCATILU - Structuri de date volumul 2, Editura ASE, 2008
  • Ion IVAN, Romica ADAM - Structuri de date - curs litografiat, Lito. ASE, Bucuresti, 1992.
  • Ion IVAN, Romica ADAM - Structuri de date - culegere de probleme, Lito. ASE, Bucuresti, 1992.
  • Ion IVAN, Marius POPA, Cristian IONITA, Catalin BOJA, Adrian POCOVNICU, Daniel MILODIN - Practica dezvoltarii software orientata pe structuri de date, Editura ASE, Bucuresti, 2004.
  • Liviu NEGRESCU - Limbajele C/C++ pentru incepatori, Ed. Microinformatica, Cluj, 1996.
  • Ion SMEUREANU, Ion IVAN, Marian DARDALA - Limbajul C++ prin exemple, Editura Cison, 1995.
  • Ion SMEUREANU, Ion IVAN, Marian DARDALA - Structuri si obiecte n C++, Editura Cison, 1998.
  • Ion SMEUREANU, Marian DARDALA - Programarea in limbajul C/C++, Editura Cison, 2001.
  • Ion SMEUREANU, Marian DARDALA - Programarea orientata obiect in limbajul C++, Editura Cison, 2002.