sda lab1

Upload: tudor-tilinschi

Post on 03-Apr-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 SDA Lab1

    1/7

    Ministerul Educaiei al Republicii Moldova

    Universitatea Tehnic a MoldoveiCatedra Informatic Aplicat

    RaportLucrare de laborator Nr.1

    La Structuri de Date si Algoritmi

    A efectuat:

  • 7/28/2019 SDA Lab1

    2/7

    Chiinu 20111 Tema:Implimentarea tipului abstract de date.Tabloul de structuri.

    2 Sarcina:De implimentat tipul abstract de date,tablou de structuri si de elaboratun program.

    3 Structura data:Structura stat cu 5 cimpuri.1)Denumire

    2)Capitala

    3)Piata

    4)Populatia

    5)PIB

    4 Analiza datelor:

    Cmpurile structurii stat :denumire un tablou de 40 caractere in care se va pstra denumirea fiecarui stat ;capitala un tablou de 40 caractere n care se va pstra denumirea capitaleistatului;piata tablou de 40 caractere in care se va pstra numele pietii;populatia - variabila de tip integer n care se va stoca numarul de populatie astatului;

    pib variabilade tip integer in care se va pstra pib-ul;

    a- pointer ce indica la primul element din tabloul de strcturi stat.

    5 Descrierea scurta a teoriei

    Tipul abstract de date reprezinta un model matematic al structurii de date studiatesi 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 datelor3) Crearea fisierului cu extensia (.cpp) care contine main-ul.Un TDA poate fi conceput ca un model matematic cruia i se asociaz ocolecie de operatori specifici. Vom realiza o paralel cu conceptul de procedur.Procedura generalizeaz noiunea de operator. n loc de a fi limitat la utilizareaexclusiv a operatorilor definii n cadrul limbajului de programare , folosind

    procedurile, programatorul este liber s-i defineasc proprii si operatori, pecare ulterior s-i aplice asupra unor operanzi care nu e necesar s aparintipurilor de baz ale limbajului utilizat.

  • 7/28/2019 SDA Lab1

    3/7

    6 Mersul lucrarii.

    Fisierul stat.h.Aici sunt definite proprietatile obiectului in cazul data statul,sideclaratiile functiilor care asigura operatiuni asupra obiectului.

    \\stat.h

    typedef struct stat

    { char denumire[40];char capitala[40];char piata[40];int populatia;int pib;

    } stat;void AlocDinam(stat *a,int *n);void Introducere(stat *a,int n);void Sortare(stat *a,int n);void Redactare(stat *a);void Adaug(stat *a,int *n);void Delet(stat *a,int *n);void Adaugp(stat *a,int *n);void WriteF(stat *a,int n);void ReadF(stat*a,int *n);void Write(stat *a,int n);

    Fisierul stat.cpp.Reprezinta o colectie de date ale functiilor descrise in primulfisier.\\stat.cpp

    #include "stat.h"

    #include#include#include#include#includevoid AlocDinam(stat *a,int *n){ printf("Dati numarul de elemente a masivului: \n");

    scanf("%d",n);a=(stat *)malloc(*n*sizeof(stat *));if (!a) puts ("Alocarea nu a avut loc\n");else puts("Alocarea a avut loc cu succes\n");

    }

    void Introducere(stat *a,int n){ int i;

    puts ("Introduceti datele despre state in ordinea data:");puts("Denumire,capitala,piata,populatia,pib.");

    for (i=0;i

  • 7/28/2019 SDA Lab1

    4/7

    scanf("%d%d",&a[i].populatia,&a[i].pib);

    }}int Cautare(stat *a,int n){ int i;

    char s[40];puts ("Dati denumirea statului cautat\n");

    fflush(stdin);gets(s);

    for(i=0;i

  • 7/28/2019 SDA Lab1

    5/7

    gets(a[*n-1].piata);scanf("%d%d",&a[*n-1].populatia,&a[*n-1].pib);

    }void Delet(stat *a,int *n){int k,i;

    puts("Dati pozitia elementului care do3riti sa-l eliminati\n");scanf("%d",&k);k=k-1;

    for(i=k;ip-1;i--) a[i]=a[i-1];puts ("Introduceti datele despre statul introdus in ordinea data:\n");

    puts("Denumire,capitala,piata,populatia,pib.\n");fflush(stdin);

    gets(a[i].denumire);fflush(stdin);gets(a[i].capitala);fflush(stdin);gets(a[i].piata);

    scanf("%d%d",&a[p-1].populatia,&a[p-1].pib);

    }void WriteF(stat *a,int n){int i;FILE *fp;fp=fopen("write.txt","w");for (i=0;i

  • 7/28/2019 SDA Lab1

    6/7

    }

    Functia main//lab7.cpp

    #include "stat.c"

    int main(){stat *a;int nrm,n;char s[40];while (1){ puts("1: Alocarea dinamica a memoriei pentru masivul de tip structura \n");

    puts("2: Introducerea elementelor masivului de la tastatura \n");puts("3: Cautatea elementelor din masiv\n");puts("4: Sortarea masivului /n");puts("5: Redactarea elementelor din masiv \n");puts("6: Adaugarea unui nou element la sfirshitul masivului\n");

    puts("7: Stergerea elementului indicat\n");puts("8: Adaugarea unui element pe pozitia indicata \n");puts("9: Salvarea masivului in fisier \n");puts("10:Citirea elementelor masivului din fisier\n");puts("11:Afisarea elementelor masivului pe ecran\n");puts("12:Eliberarea memorie alocate pentru masiv\n");puts("13:Exit\n");printf("Dati comanda dorita\n");

    scanf("%d",&nrm);switch(nrm){ case 1: AlocDinam(a,&n);puts("Apasa ceva");getch(); break;

    case 2: Introducere(a,n);puts("Apasa ceva"); getch(); break;case 3:

    int k=Cautare(a,n);

    if (k==0) puts("Statul nu exista in masiv\n");else printf("Statul este in masiv pe pozitia %d\n",k);puts("Apasa ceva"); getch(); break;

    case 4: Sortare(a,n);puts("Apasa ceva"); getch() ;break;case 5: Redactare(a);puts("Apasa ceva");getch(); break;case 6: Adaug(a,&n);puts("Apasa ceva");getch(); break;case 7:Delet(a,&n);puts("Apasa ceva");getch(); break;case 8:Adaugp(a,&n);puts("Apasa ceva");getch(); break;case 9:WriteF(a,n);puts("Apasa ceva");getch(); break;case 10:ReadF(a,&n);puts("Apasa ceva");getch(); break;case 11:Write(a,n);puts("Apasa ceva");getch(); break;case 12: free(a);puts("Apasa ceva"); getch(); break;case 13: return 0;default: break;

    }}}

  • 7/28/2019 SDA Lab1

    7/7

    7 Rezultatele obtinute:

    Meniul programului

    8 Concluzie:

    In cadrul acestei lucrari de laborator am insusit metodele de elaborare siimplimentare a tipurilor abstracte de date. Acestea pot fi cu usurinta folosite faramodificari in alte programe, asfel reducind timpul necesar pentru eleborare

    programelor.

    Bibliografia folosita: Conspect dat la prelegeri de catre M.Kulev pentru studentiigrupelor calculatoare pe tema Prelucrarea tablourilor de structure.Implimentareatipului abstract de date.