Sunteți pe pagina 1din 23

MINISTERUL EDUCAŢIEI REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI Facultatea


„Calculatoare, Informatică şi Microelectronică”

RAPORT
Lucrare de laborator nr. 1
la Structuri de Date si Algoritmi

A efectuat:
st. gr. AI-182 Croitoru Tudor

A verificat:
dr., conf. univ. Sorin Botnaru

2019
Lucrarea de laborator nr.1 la SDA
entru studenţii an. 1, FCIM, UTM
Tema: Implementarea tipului de date abstract “Tablou de structuri” în limbajul C.

Scopul lucrării: Obținerea deprinderilor practice de implementare și de utilizare a tipului


de date abstract (TDA) “Tablou de structuri” în limbajul C.

Sarcina de lucru: De scris trei fisiere-text în limbajul C pentru implementarea si utilizarea


TDA “Tablou de structuri”:

1. Fişierul antet tablou.h care conține: a) specificația structurei elementului tabloului


(după varianta) şi b) prototipurile funcţiilor care asigură operaţiunile de prelucrare a
tabloului de structuri.

2. Fişierul tablou.cpp sau tablou.c care conţine codurile (implementările) tuturor funcţiilor
declarate în fişierul antet.

3. Fişierul utilizatorului lab1.cpp sau lab1.c care reprezintă un program cu funcţia main ( )
pentru prelucrarea tabloului de structuri cu afişarea meniului de opţiuni pe ecran si anume:
alocarea memoriei dinamice pentru tabloul de structuri cu n elemente, introducerea
informaţiei despre elementele tabloului de la tastatură, afişarea informaţiei despre elementele
tabloului pe ecran, căutarea elementului tabloului după unui cîmp al structurei, modificarea
cîmpurilor elementului tabloului, interschimbarea a 2 elemente indicate ale tabloului,
sortarea elementelor tabloului după unui cîmp, adăugarea unui element nou la sfîrșitul
tabloului, adăugarea unui element nou la începutul tabloului, inserarea unui element nou în
tabloul la pozitia indicată, stergerea (eliminarea) unui element din tabloul, scrierea (salvarea)
informaţiei despre elementele tabloului în fişier, citirea informaţiei despre elementele
tabloului din fişier, eliberarea memoriei dinamice alocate pentru tabloul, ieşire din program.

Variantele structurilor:

1. Carte 9. Imobil

2. Film 10. Stat

3. Hotel 11. Rută aeriană

4. Cinematograf 12. Farmacie

5. Marfă 13. Companie telefonică

6. Automobil 14. Agentie de turism

7. Disciplină 15. Universitate

8. Casă de schimb valutar


Varianta 9 :
Marfa
Denumirea marfei ,pretul,masa,cantitatea.

Set de operații pe o bază de date de structuri de Array. Folosind comanda


de selectare "Switch" și Ciclu infinită pentru meniul de operații.

O serie de structuri în limbajul C pot fi utilizate pentru stocarea și prelucrarea informațiilor


acelorași elemente (obiecte de structură) într-o bază de date simplă. Pentru crearea unei baze
de date utilizând o serie de structuri, trebuie să determinăm un set de operații pe ea. De obicei,
acest set de operații pe o bază de date de structuri poate fi reprezentat după cum urmează:

1. alocarea dinamică a memoriei pentru o serie de elemente n ale structurii date.


2. elemente de intrare ale matricei de structuri din tastatură.
3. Elementele de ieșire ale matricei de pe ecran.
4. Căutarea unui element în matrice.
5. modificarea unui element de matrice.
6. Schimbarea a două elemente de matrice.
7. sortarea elementelor de matrice.
8. scrierea (salvarea) elementelor din matrice în fișier.
9. citirea (încărcarea) elementelor din matrice din fișier.
10. eliberarea memoriei alocate dinamic pentru matrice.
11. adăugarea unui element la sfârșitul matricei.
12. introducerea unui element în matrice.
13. ștergerea unui element din matrice.
14. alte operațiuni legate de determinarea unor informații (statistici) din baza de date.

Toate aceste operațiuni (options) pot fi implementate într-un program de limbaj C pentru o
serie de procesări de baze de date structurate prin crearea unui număr corespunzător de
funcții (subprograme) și apoi prin apelarea lor din funcția main () într-o anumită ordine. De
obicei, ordinea și numărul acestor apeluri de funcții (ordinea și numărul de opțiuni necesare
pentru a efectua) depind și sunt determinate de utilizator în timpul unei sesiuni de lucru cu
baza de date. De ce este necesar să se dezvolte interfața de utilizator adecvată pentru
comunicarea dintre utilizator și program. Să luăm în considerare procesul de dezvoltare a
unei interfețe simple de utilizare în limbajul C pe baza utilizării instrucțiunii de selecție
"Switch" și un ciclu infinită care oferă posibilitatea de a ieși pe ecran un simplu meniu de
operații (opțiuni) în timpul unei sesiuni de lucru cu baza de date. În primul rând, este necesar
să se ia în considerare Switch de selecție a selecției.
Instrucțiunea de selecție "Switch" în limbajul C.

 Permite programului să execute diferite declarații bazate pe o expresie care poate


avea mai mult de două valori. Switch de declarație este, de asemenea, numit
declarație de alegere multiple.
 Înainte de aceasta, folosind instrucțiunea if, suntem limitați să evaluăm o expresie care
ar putea avea doar două valori: TRUE sau FALSE.
 Daca există mai mult de două valori, a trebuit să folosim declarații imbricate IF.
 Declarația de Switch face ca astfel de cuibări să fie inutile.
 Este Utilizat impreuna cu cuvintele default, keywords, break
 Declarația Switch permite executarea a mai mult de o alternativă (prin plasarea
declarațiilor de pauză), în timp ce instrucțiunea if nu.
 Construcția instrucțiunii Swith are următoarea formă:

switch(expression)
{ case literal1 : statement(s);
break;
case literal2 : statement(s);
break;
...................
case literalN : statement(s);
break;
default : statement(s);
}
next statement;

1. Evaluează expresia și compară valoarea sa de tip int sau char cu literele int sau
char după fiecare etichetă.
2. Dacă se găsește o potrivire între expresie și unul dintre literali, execuția este
transferată în instrucțiunile urmând eticheta Case.
3. Dacă nu se găsește nici o potrivire, execuția este transferată în instrucțiunile
urmând eticheta default opțională.
4. Dacă nu se găsește nici o potrivire și nu există etichetă default, execuția trece la
prima instrucțiune urmând instrucțiunea de închidere a instrucțiunii switch,
următoarea instrucțiune.
5. Pentru a vă asigura că sunt executate numai instrucțiunile asociate șablonului de
potrivire, includeți o instrucțiune de pauză acolo unde este necesar, care termină
întreaga instrucțiune de Switch.

Input data:
n,k,c, ,i integer variable
Marfa *A, *RN – Vareabile de tip „marfa”
filename[20], ch - char
FILE *fp;

3
Output data:

funtiile: (declaration)

1. void introduce(marfa * A,int n);


2. void afisare(marfa * A,int n);
3. void sortare(marfa *A,int n);
4. int cautare(marfa *A, int n, char *nume);
5. marfa *realocarea(marfa *A, int *n, marfa a);
6. marfa *appenddata(marfa *A, int *n, marfa a);
7. marfa *deletedata(marfa *A, int *n, int k);
8. void savedata(marfa *A, int n, char *filename);
9. void readdata(char *filename);

marfa.h_____________________________________________
typedef struct marfa
{
char nume[20];
float pret;
float masa;
int cantitate;
} marfa;
void introduce(marfa * A,int n);
void afisare(marfa * A,int n);
void sortare(marfa *A,int n);
int cautare(marfa *A, int n, char *nume);
marfa *realocarea(marfa *A, int *n, marfa a);
marfa *appenddata(marfa *A, int *n, marfa a);
marfa *deletedata(marfa *A, int *n, int k);
void savedata(marfa *A, int n, char *filename);
void readdata(char *filename);
functions.c_________________________________________

#include "marfah.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>

void introduce(marfa * A,int n)


{
int i;
printf("Introduceti informatia pentru marfa :\n");
for (i=0;i<n;i++)
{
printf("Marfa numarul %d:\n",i+1);
printf("Denumirea:");
fflush(stdin);
gets(A[i].nume);
printf("Pret(lei): ");
fflush(stdin);
scanf("%f",&A[i].pret);
printf("Masa(kg): ");
scanf("%f",&A[i].masa);
printf("Cantitate: ");
scanf("%i",&A[i].cantitate);
printf("\n");

}
}

void afisare(marfa * A,int n)


{
int i;
printf("Lista de marfe este :\n");
for (i=0;i<n;i++)
{
printf(" Denumirea:%s \n Pretul(lei):%f \n Masa(kg):%f \n Cantitatea:
%d\n\n",A[i].nume,A[i].pret,A[i].masa,A[i].cantitate);
}
}

void sortare(marfa *A,int n)


{
int i,k;
marfa t;
for(i=0;i<n;i++)
{
for(k=0;k<n-i-1;k++)
{
if(stricmp(A[k].nume,A[k+1].nume)>0)
{
t=A[k];
A[k]=A[k+1];
A[k+1]=t;

}
}
}

int cautare(marfa *A, int n, char *nume)


{
int i;
for(i=0; i<n; i++)
{

if(stricmp(A[i].nume,nume)==0)
{
return i;
return -1;
}
}
}

marfa* modificare(marfa *A, int n)


{
int t;
int i;
marfa * B;
B=(marfa*)realloc(A, n* sizeof(marfa));
printf("In total aveti %i marfuri:\n", n);
system("pause");
system("cls");
t=0;
for(i=0; i<n; i++)
{
printf("Marfa cu numarul :%i\n", i+1);
puts("Modificarea denumirii \t(1.Da/0.Nu)");
scanf("%d",&t);
if(t)
{
puts("Da-ti denumirea noua a marfei:\n");
fflush(stdin);
gets(B[i].nume);
}
puts("Modificarea pretului \t(1.Da/0.Nu)");
scanf("%d",&t);
if (t)
{
puts("Da-ti pretul nou a marfei:\n");
fflush(stdin);
scanf("%f",&B[i].pret);
}
puts("Modificarea masei \t(1.Da/0.Nu)");

scanf("%d",&t);
if (t)

puts("Da-ti masa noua a marfei \t(1.Da/0.Nu)");


fflush(stdin);
scanf("%f",&B[i].masa);
}
puts("Modificarea cantitatii \t(1.Da/0.Nu)");
scanf("%d",&t);
if (t)
{
puts("Da-ti numarul de cantitate pentru marfa data \t(1.Da/0.Nu)");
fflush(stdin);
scanf("%i",&B[i].cantitate);
}
}
A=(marfa*)realloc(B,n*sizeof(marfa));
if(A==NULL)
{
puts("Din pacate operatiunea a luat esec");
system("pause");
return A;
}

return A;

}
marfa *appenddata(marfa *A, int *n, marfa a)
{ marfa *RN;
RN=(marfa*)realloc(A,(*n+1)*sizeof(*A));
if(!RN)
return RN;
RN[*n]=a;
*n=*n+1;
return RN;
}
marfa* deletedata(marfa *A, int *n, int k)
{
int i;
marfa *RN;
for(i=k; i<*n-1; i++)
{A[i]= A[i+1];}
RN = (marfa *)realloc(A, (*n-1)*sizeof(*RN) );
if (RN==NULL) {return RN;}

*n=*n-1;
return RN;
}

void savedata(marfa *A, int n,char *filename)


{ FILE *fp;
int i;
fp=fopen(filename,"w");
for(i=0;i<n;i++)
{
fprintf(fp,"%s %f %f %i",A[i].nume, A[i].pret, A[i].masa, A[i].cantitate);

}
fclose(fp);
}
void readdata(char *filename)
{
FILE *fp;
marfa *A;
int n=3,i=0;
fp=fopen(filename,"r");
if(!fp)
{
printf("Fisierul nu exista!\n");
system("pause");
exit(1);
}
fscanf(fp,"%s%f%f%i",&A[i].nume,&A[i].pret,&A[i].masa,&A[i].cantitate);
fclose(fp);
printf("Denumirea: %s\n Pretul: %f\n Masa: %f\n Cantitatea: %i\n",
A[i].nume,A[i].pret,A[i].masa,A[i].cantitate);

#include "marfah.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>

void introduce(marfa * A,int n)


{
int i;
printf("Introduceti informatia pentru marfa :\n");
for (i=0;i<n;i++)
{
printf("Marfa numarul %d:\n",i+1);
printf("Denumirea:");
fflush(stdin);
gets(A[i].nume);
printf("Pret(lei): ");
fflush(stdin);
scanf("%f",&A[i].pret);
printf("Masa(kg): ");
scanf("%f",&A[i].masa);
printf("Cantitate: ");
scanf("%i",&A[i].cantitate);
printf("\n");
}
}

void afisare(marfa * A,int n)


{
int i;
printf("Lista de marfe este :\n");
for (i=0;i<n;i++)
{
printf(" Denumirea:%s \n Pretul(lei):%f \n Masa(kg):
%f \n Cantitatea:
%d\n\n",A[i].nume,A[i].pret,A[i].masa,A[i].cantitate);
}
}

void sortare(marfa *A,int n)


{
int i,k;
marfa t;
for(i=0;i<n;i++)
{
for(k=0;k<n-i-1;k++)
{
if(stricmp(A[k].nume,A[k+1].nume)>0)
{
t=A[k];
A[k]=A[k+1];
A[k+1]=t;
}
}
}

int cautare(marfa *A, int n, char *nume)


{
int i;
for(i=0; i<n; i++)
{

if(stricmp(A[i].nume,nume)==0)
{
return i;
return -1;
}
}
}

marfa* modificare(marfa *A, int n)


{
int t;
int i;
marfa * B;
B=(marfa*)realloc(A, n* sizeof(marfa));
printf("In total aveti %i marfuri:\n", n);
system("pause");
system("cls");
t=0;
for(i=0; i<n; i++)
{
printf("Marfa cu numarul :%i\n", i+1);
puts("Modificarea denumirii \t(1.Da/0.Nu)");
scanf("%d",&t);
if(t)
{
puts("Da-ti denumirea noua a marfei:\n");
fflush(stdin);
gets(B[i].nume);
}
puts("Modificarea pretului \t(1.Da/0.Nu)");
scanf("%d",&t);
if (t)
{
puts("Da-ti pretul nou a marfei:\n");
fflush(stdin);
scanf("%f",&B[i].pret);
}
puts("Modificarea masei \t(1.Da/0.Nu)");
scanf("%d",&t);
if (t)
{
puts("Da-ti masa noua a marfei \t(1.Da/0.Nu)");
fflush(stdin);
scanf("%f",&B[i].masa);
}
puts("Modificarea cantitatii \t(1.Da/0.Nu)");
scanf("%d",&t);
if (t)
{
puts("Da-ti numarul de cantitate pentru marfa
data \t(1.Da/0.Nu)");
fflush(stdin);
scanf("%i",&B[i].cantitate);
}
}
A=(marfa*)realloc(B,n*sizeof(marfa));
if(A==NULL)
{
puts("Din pacate operatiunea a luat esec");
system("pause");
return A;
}

return A;

}
marfa *appenddata(marfa *A, int *n, marfa a)
{ marfa *RN;
RN=(marfa*)realloc(A,(*n+1)*sizeof(*A));
if(!RN)
return RN;
RN[*n]=a;
*n=*n+1;
return RN;
}
marfa* deletedata(marfa *A, int *n, int k)
{
int i;
marfa *RN;
for(i=k; i<*n-1; i++)
{A[i]= A[i+1];}
RN = (marfa *)realloc(A, (*n-1)*sizeof(*RN) );
if (RN==NULL) {return RN;}

*n=*n-1;
return RN;
}

void savedata(marfa *A, int n,char *filename)


{ FILE *fp;
int i;
fp=fopen(filename,"w");
for(i=0;i<n;i++)
{
fprintf(fp,"%s %f %f %i",A[i].nume, A[i].pret,
A[i].masa, A[i].cantitate);
}
fclose(fp);
}
void readdata(char *filename)
{
FILE *fp;
marfa *A;
int n=3,i=0;
fp=fopen(filename,"r");
if(!fp)
{
printf("Fisierul nu exista!\n");
system("pause");
exit(1);
}
fscanf(fp,"%s%f%f
%i",&A[i].nume,&A[i].pret,&A[i].masa,&A[i].cantitate);
fclose(fp);
printf("Denumirea: %s\n Pretul: %f\n Masa: %f\n Cantitatea:
%i\n", A[i].nume,A[i].pret,A[i].masa,A[i].cantitate);

}
main.c_______________________________________________
#include "marfac.c"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main() {
int n, c, k;
marfa *A, *RN;
char filename[20];
char nume[20];
marfa a;
FILE *fp;

while (1) {
puts("\t\tMeniu");
puts("1. Alocarea memoriei");
puts("2. Introducerea informatiei");
puts("3. Afisarea datelor pe ecran");
puts("4. Cautarea elementului conform denumirei");
puts("5. Sortarea disciplinilor dupa denumire");
puts("6. Modificarea elementului");
puts("7. Adaugarea unui element");
puts("8. Stergerea unui element");
puts("9. Salvarea bazei in fisier");
puts("10. Citirea din fisier");
puts("0. Iesire");
printf("\nComanda <<< ");
scanf("%d", &c);
switch (c) {
case 0:
if (A) {
free(A);
A = NULL;
}
exit(1);
break;
case 1:
printf("Introduceti numarul de marfe: ");
scanf("%d", &n);
A = (marfa *) malloc(n * sizeof(*A));
if (A == NULL) {
printf("Memoria nu a fost alocata\n");
return -1;
}
puts("\nTastati o tasta pentru continuare");
getch();
break;
case 2:
introduce(A, n);
puts("\nTastati o tasta pentru continuare");
getch();
break;
case 3:
afisare(A, n);
puts("\nTastati o tasta pentru continuare");
getch();
break;
case 4:
printf("Dati denumirea marfei: ");
fflush(stdin);
gets(nume);
k = cautare(A, n, nume);
system("pause");
if (k == -1) {
puts("Denumirea nu a fost gasita");
} else {
printf("Marfa este :\n Marfa %i \n", k + 1);
printf(" Denumirea:%s \n Pretul(lei):%f \n Masa(kg):%f \n Cantitatea:%d\n\n ", A[k].nume,
A[k].pret,
A[k].masa, A[k].cantitate);
}
puts("\nTastati o tasta pentru continuare");
getch();
break;
case 5:
sortare(A, n);
puts("Sortarea a fost efectuata cu succes , pentru a vedea lista de marfuri sortate tasteaza in meniu
<<3>>");
puts("\nTastati o tasta pentru continuare");
getch();
break;
case 6:
puts("\n/t/t Alegeti marfa care o doriti sa o modificati:");
scanf("%i", &k);
modificare(A, n);
puts("Modificarea a fost realizata cu succes");
puts("\nTastati o tasta pentru continuare");
getch();
break;
case 7:
puts("Dati informatie despre marfa noua:");
printf("Denumirea: ");
fflush(stdin);
gets(a.nume);
printf("Pret: ");
scanf("%f", &a.pret);
printf("Masa: ");
scanf("%f", &a.masa);
printf("Cantitate: ");
scanf("%i", &a.cantitate);
RN = appenddata(A, &n, a);
if (!RN) {
puts("Adaugarea nu a avut loc!");
puts("\nTastati o tasta pentru continuare");
getch();
break;
}
puts("Operatiunea afost efectuata cu succes!");
A = RN;
puts("\nTastati o tasta pentru continuare");
getch();
break;
case 8:
puts("Dati pozitia necesara, pentru eliminare din baza");
scanf("%i", &k);
RN = deletedata(A, &n, k - 1);
if (!RN) {
("Eliminarea nu a avut loc!");
puts("\nTastati o tasta pentru a continua");
getch();
break;
}
puts("Operatiunea s-a efectuat cu succes");
A = RN;
puts("\nTastati o tasta pentru a continua");
getch();
break;
case 9:
//puts("Dati numele fisierului: ");
//fflush(stdin);
//gets(filename);
//strcat(filename,".txt");
// savedata(A, n, "file.txt");
// puts("Fisierul dumnevoastra a fost salvat!");
getch();
break;
case 10:
//puts("Dati numele fisierului: ");
//fflush(stdin);
//gets(filename);
//strcat(filename,".txt");
// readdata("file.txt");
break;
default:
puts("\nOptiunea introdusa nu exista!");
puts("\nTastati o tasta pentru continuare");
getch();
}
}
getch();
return 0;
}
Menu___________________________

Alocarea dinamica Memoriei:

Introducere Imobiliare:
Cautarea Imobiliare:

Sortarea Imobiliare:
Editarea Imobiliare:
Aduagarea Imobil Nou:

Stergerea Imobiliare:
Salvarea In Fila:

marfafile.txt:
Citirea Imobil Din Fila:

Afisarea Imobil Pe Ecran:

Concluzie:

În această lucrare de laborator am creat trei fișiere în limbajul C, pentru realizarea și utilizarea
Tabloul de Structuri.
- un titlu header.h pentru descrierea structurii de date a elementului matricei (structura unei
Imobil) și, de asemenea, pentru prototipuri de funcții, oferind operații de procesare a matricei.

- Un fisier functie.c pentru definirea functiilor (texte de functii), declarate in fisierul de titlu.

- un fișier de utilizator - funcție mаin () pentru prelucrarea matricei de structuri care


afișează pe ecran meniul de operații: alocarea memoriei dinamice, introducerea
informaţiei, afişarea informaţiei, căutarea elementului tabloului după unui cîmp,
modificarea cîmpurilor elementului tabloului, interschimbarea a 2 elemente indicate
ale tabloului, sortarea elementelor tabloului, adăugarea unui element nou la sfîrșitul
tabloului, adăugarea unui element nou la începutul tabloului, inserarea unui element
nou în tabloul la pozitia indicată, stergerea (eliminarea) unui element din tabloul,
scrierea (salvarea) informaţiei despre elementele tabloului în fişier, citirea informaţiei
despre elementele tabloului din fişier, eliberarea memoriei dinamice alocate pentru
tabloul, ieşire din program.
Acest program vă permite să editați toate datele din baza de date: să adăugați ımobil noi, să le
editați, să le adăugați, să le ștergeți, să le sortați și în final aveți posibilitatea să salvați toate
informațiile într-un fișier și să le citiți dintr-un fișier . A fost o practică bună pentru SDA.

bibliografie

1. http://cprogramminglanguage.net/
2. „The C programming language” By Brian W. Kernighan and Dennis M. Ritchie
3. Conspects on Computer Programming of Lector dr., conf. univ. M.Kulev. Chișinău:
UTM, 2014.
4. http://www.programiz.com/c-programming/c-file-input-output
5. http://www.programiz.com/c-programming/c-structures
6. http://www.cprogramming.com/tutorial/c/lesson7.html
7. http://www.codingunit.com/c-tutorial-structures-unions-typedef
8. https://www.youtube.com/watch?v=38I_AUMpKpQ&index=50&list=PL6gx4Cwl9D
GAKIXv8Yr6nhGJ9Vlcjyymq

S-ar putea să vă placă și

  • LAB8
    LAB8
    Document13 pagini
    LAB8
    DorelDjj
    Încă nu există evaluări
  • Lab 71
    Lab 71
    Document10 pagini
    Lab 71
    DorelDjj
    Încă nu există evaluări
  • LAB8
    LAB8
    Document13 pagini
    LAB8
    DorelDjj
    Încă nu există evaluări
  • LAB7
    LAB7
    Document12 pagini
    LAB7
    DorelDjj
    Încă nu există evaluări
  • LAB6
    LAB6
    Document13 pagini
    LAB6
    DorelDjj
    Încă nu există evaluări
  • LAB7
    LAB7
    Document12 pagini
    LAB7
    DorelDjj
    Încă nu există evaluări
  • LAB6
    LAB6
    Document13 pagini
    LAB6
    DorelDjj
    Încă nu există evaluări
  • LAB3
    LAB3
    Document7 pagini
    LAB3
    DorelDjj
    Încă nu există evaluări
  • Raport
    Raport
    Document8 pagini
    Raport
    DorelDjj
    Încă nu există evaluări
  • LAB4
    LAB4
    Document6 pagini
    LAB4
    DorelDjj
    Încă nu există evaluări
  • LAB5
    LAB5
    Document15 pagini
    LAB5
    DorelDjj
    Încă nu există evaluări
  • LAB3
    LAB3
    Document7 pagini
    LAB3
    DorelDjj
    Încă nu există evaluări
  • LAB4
    LAB4
    Document6 pagini
    LAB4
    DorelDjj
    Încă nu există evaluări
  • LAB5
    LAB5
    Document15 pagini
    LAB5
    DorelDjj
    Încă nu există evaluări
  • LAB2
    LAB2
    Document4 pagini
    LAB2
    DorelDjj
    Încă nu există evaluări
  • LAB1
    LAB1
    Document4 pagini
    LAB1
    DorelDjj
    Încă nu există evaluări
  • LAB2
    LAB2
    Document4 pagini
    LAB2
    DorelDjj
    Încă nu există evaluări
  • Prezentaree
    Prezentaree
    Document9 pagini
    Prezentaree
    DorelDjj
    Încă nu există evaluări
  • LAB1
    LAB1
    Document4 pagini
    LAB1
    DorelDjj
    Încă nu există evaluări
  • Prezentare
    Prezentare
    Document10 pagini
    Prezentare
    DorelDjj
    Încă nu există evaluări
  • Prezent Are
    Prezent Are
    Document10 pagini
    Prezent Are
    DorelDjj
    Încă nu există evaluări
  • Raport
    Raport
    Document8 pagini
    Raport
    DorelDjj
    Încă nu există evaluări
  • Prezentaree
    Prezentaree
    Document9 pagini
    Prezentaree
    DorelDjj
    Încă nu există evaluări
  • LAB2-3 Croitoru Tudor
    LAB2-3 Croitoru Tudor
    Document26 pagini
    LAB2-3 Croitoru Tudor
    DorelDjj
    Încă nu există evaluări
  • Croitoru Tudor Laborator 7
    Croitoru Tudor Laborator 7
    Document6 pagini
    Croitoru Tudor Laborator 7
    DorelDjj
    Încă nu există evaluări
  • Examen Final
    Examen Final
    Document23 pagini
    Examen Final
    DorelDjj
    Încă nu există evaluări
  • Laboratorul 4
    Laboratorul 4
    Document9 pagini
    Laboratorul 4
    DorelDjj
    Încă nu există evaluări
  • LAB4-5 Croitoru Tudor
    LAB4-5 Croitoru Tudor
    Document27 pagini
    LAB4-5 Croitoru Tudor
    DorelDjj
    Încă nu există evaluări
  • Laborator nr1 SDA
    Laborator nr1 SDA
    Document24 pagini
    Laborator nr1 SDA
    DorelDjj
    Încă nu există evaluări