Sunteți pe pagina 1din 9

ANEXA A

Raport

la cursul de “Structuri de date și algoritmi”

Verificat:
, doctor, conf. univ.
Departamentul Informatică şi IS,
Facultatea FCIM, UTM

Chișinău – 2022
#include <stdio.h>

2
#include <stdlib.h>

#include <stdbool.h>

struct date

int ziua;

int luna;

int an;

};

struct evidenta

char nume[20];

char prenume[20];

char marca[20];

char culoare[20];

int nrinmatriculare;

int aninmatriculare;

char caroserie[20];

};

//citirea datelor

void citire (struct evidenta evid[], int n)

int i;

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

printf ("\nNume si prenume proprietar: ");

scanf ("%s %s", evid[i].nume, evid[i].prenume);

printf ("Marca automobilului: ");

scanf ("%s", evid[i].marca);

printf ("Culoarea automobilului: ");

scanf ("%s", evid[i].culoare);

printf ("Nr. de inmatriculare: ");

scanf ("%i", &evid[i].nrinmatriculare);

printf ("Anul de inmatriculare: ");

scanf ("%i", &evid[i].aninmatriculare);

printf ("Tipul caroseriei: ");

scanf ("%s", evid[i].caroserie);

}
3
//afisarea datelor

void afisare (struct evidenta evid[], int n)

int i;

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

printf

("\nNume si prenume proprietar: %s %s\t Marca automobilului: %s\t Culoarea automobilului: %s\t Nr. de
inmatriculare: %i\t Anul de inmatriculare: %i\t Tipul caroseriei: %s\n",

evid[i].nume, evid[i].prenume, evid[i].marca, evid[i].culoare,

evid[i].nrinmatriculare, evid[i].aninmatriculare, evid[i].caroserie);

//citirea datei

void data (struct date dat[], int n)

int i;

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

printf ("\nZiua: ");

scanf ("%i", &dat[i].ziua);

printf ("Luna: ");

scanf ("%i", &dat[i].luna);

printf ("Anul: ");

scanf ("%i", &dat[i].an);

//afisarea datei

void afisare2 (struct date dat[], int n)

int i;

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

printf ("\nData ultimei inspectii este: %i/%i/%i", dat[i].ziua, dat[i].luna, dat[i].an);

//sortarea ascendenta a array-ului original utilizand Quick Sort

4
void quicksort (struct date dat[], int left, int right)

int i, j, pivot;

struct date temp2;

if (left < right)

pivot = left;

i = left;

j = right;

while (i < j)

while (dat[i].an <= dat[pivot].an && i < right)

++i;

while (dat[j].an > dat[pivot].an)

--j;

if (i < j)

temp2 = dat[i];

dat[i] = dat[j];

dat[j] = temp2;

temp2 = dat[pivot];

dat[pivot] = dat[j];

dat[j] = temp2;

quicksort (dat, left, j - 1);

quicksort (dat, j + 1, right);

//sortarea descendenta utilizand Insertion Sort

void insertion_sort(struct date dat[], int n)

5
{

int i, j;

struct date key;

for(i = 1; i< n; i++)

j = i;

while(j > 0 && dat[j].an > dat[j - 1].an)

key = dat[j];

dat[j] = dat[j-1];

dat[j-1] = key;

j--;

void afisare_sort(struct date dat[], int n)

int i;

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

printf("%d", dat[i].an);

printf("\n");

//sortarea descendenta dupa nume cu Insertion Sort

void InsertionSort(struct evidenta evid[], int n)

int i, j;

struct evidenta key1;

for(i = 1; i < n; i++)

j = i;

while(j > 0 && evid[j].nume < evid[j - 1].nume)

6
key1 = evid[j];

evid[j] = evid[j-1];

evid[j-1] = key1;

j--;

void afisare_sort1(struct evidenta evid[], int n)

int i;

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

printf("%s", evid[i].nume);

printf("\n");

//sortarea ascendenta dupa nume utilizand Quick Sort

void Quick_Sort(struct evidenta evid[], int left, int right)

int i, j, pivot;

struct evidenta temp1;

if (left < right)

pivot = left;

i = left;

j = right;

while (i < j)

while (evid[i].nume <= evid[pivot].nume && i < right)

++i;

while (evid[j].nume > evid[pivot].nume)

--j;

7
if (i < j)

temp1 = evid[i];

evid[i] = evid[j];

evid[j] = temp1;

temp1 = evid[pivot];

evid[pivot] = evid[j];

evid[j] = temp1;

Quick_Sort (evid, left, j - 1);

Quick_Sort (evid, j + 1, right);

//transmiterea datelor din functia void in functia main

int main ()

//declararea variabilelor

int i, j;

int n = 3;

struct evidenta evid[n];

struct date dat[n];

struct date key;

struct evidenta key1;

struct date temp2;

struct evidenta temp1;

printf ("\nDatele automobilului sunt: \n");

citire (evid, n);

printf ("\nAti introdus datele: \n");

afisare (evid, n);

data (dat, n);

afisare2 (dat, n);

8
quicksort (dat, 0, n - 1);

printf ("\nSortarea ascendenta a array-ului aplicand QuickSort:\n");

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

printf ("%d\n", dat[i].an);

printf ("\nSortarea descendenta dupa ultima data a inspectiei este: \n");

insertion_sort (dat, n);

afisare_sort (dat, n);

printf("\nSortarea descendenta dupa nume: \n");

InsertionSort(evid, n);

afisare_sort1(evid, n);

printf("\nSortarea ascendenta dupa nume\n");

Quick_Sort(evid, 0, n - 1);

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

printf ("%s\n", evid[i].nume);

/*return 0 este considerat ca "o stare de succes" a functionarii programului*/

return 0;

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