Lucrare Practica Nr1

16
Ministerul Educaţiei al Republicii Moldova Universitatea Tehnică a Moldovei Catedra Informatica Aplicata Raport la disciplina „Structuri de date si algoritme” lucrare de laborator Nr.1 A efectuat: st. gr. SI-141 E.Cucu A verificat:

description

Raport SDA nr1

Transcript of Lucrare Practica Nr1

Ministerul Educaiei al Republicii Moldova

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Moldovei

Catedra Informatica AplicataRaport

la disciplina Structuri de date si algoritmelucrare de laborator Nr.1A efectuat:st. gr. SI-141 E.Cucu

A verificat: dr., conf.univ., catedra IA M. KulevChiinu 2014

Tema: Implementarea tipurilor abstracte de date. Tablouri de structuri n C.

Scopul lucrrii: De alcatuit 3 fiiere n limbajul C pentru emplementarea i utilizarea tipului abstract de date.Formularea problemei De format:

1.Un fiier cu extensia .h unde se afla descrierea structurii elementelor tabloului i prototipurile funciilor care utilizeaz operaiuni asupra tabloului dat.

2.Un fisier cu extensia .cpp unde se afla codul funciilor declarate n fiierul 1.

3.Un fiier a utilizatorului cu extensia .cpp unde se afla funcia main pentru precesarea bazei de date n forma tabloului de structuri.Tipul abstract de date reprezinta un model matematic al structurii de date studiate si operatiuni asupra datelor. Etapele implementarii TDA in limbajul C:1.Crearea fisierului cu extensia (.h) care contine:descrierea proprietatilor SD 2.prototipurile functiilor pentru operatiuni asupra datelor 3.Crearea fisierului cu extensia (.cpp) care contine main-ul.

Un TDA poate fi conceput ca un model matematic cruia i se asociaz o colecie de operatori specifici. Vom realiza o paralel cu conceptul de procedur. Procedura generalizeaz noiunea de operator. n loc de a fi limitat la utilizarea exclusiv a operatorilor definii n cadrul limbajului de programare ("built-in" operators), folosind procedurile, programatorul este liber s-i defineasc proprii si operatori, pe care ulterior s-i aplice asupra unor operanzi care nu e necesar s aparin tipurilor de baz (primitive) ale limbajului utilizat. Un exemplu de procedur utilizat n aceast manier este spre exemplu, rutina de nmulire a dou matrici.Procedurile ncapsuleaz anumite pri ale unui algoritm prin "localizare" Aceasta nseamn plasarea ntr-o singur seciune a programului a tuturor instruciunilor relevante.

Textul programului in limbajul CMasina.h

typedef struct

{

char marca[40];

char model[40];

char origine[40];

int anu;

float pret;

}masina;

masina* din_realloc(masina *a,int n);

masina* intro_auto(char *fname,int *n);

masina* intro_manual(masina *a,int *n);

void afisare(masina *a,int *n);

void afis_an(masina *a, int *n,int an);

masina* add_car(masina *a,int *n,int nr);

masina* add_car_everyw(masina *a,int* n,int k);

masina* add_car_prepend(masina* a,int* n);

void del_car(masina *a,int *n,int nd);

void save(masina *a,int *n,char *fname);

void ord_cr(masina *a,int *n);

void car_m(masina *a,int nm);Functii.cpp

#include

#include

#include

#include

#include "1masina.h"

//ALOCARE SI REALOCARE DINAMICA

masina* din_realloc(masina *a,int n)

{

a=(masina*)realloc(a,n*sizeof(masina));

if(!a)

{

printf("\a\nNu sa alocat memorie!\n");

system("pause");

exit(1);

}

return a;

}

//CITIRE FISIER

masina* intro_auto(char *fname,int *n)

{

int i=0,m=0;

masina *a=NULL;

FILE *demo=fopen(fname,"r");

if(!demo)

{

printf("\aFisierul nu exista!\n");

}

while(!feof(demo))

{

m++;

a=din_realloc(a,m);

fscanf(demo,"%s%s%s%d%f",&a[i].marca,&a[i].model,&a[i].origine,&a[i].anu,&a[i].pret);

i++;

}

*n=m;

fclose(demo);

return a;

}

//INTRODUCERE MANUALA

masina* intro_manual(masina *a,int *n)

{

int i;

printf("Introdu numarul de masini: ");

scanf("%d",n);

a=din_realloc(a,*n);

for(i=0;i