Top Banner
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:
16

Lucrare Practica Nr1

Sep 17, 2015

Download

Documents

Cucu Eugen

Raport SDA nr1
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

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