Sunteți pe pagina 1din 7

ANEXA A

Raport
pentru lucrarea de laborator Nr.4

la cursul de “Structuri de date și algoritmi”

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

Chișinău – 2022
2.Codul programului,având comentarii relevante în el;
#include <stdio.h>

#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;

2
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);

//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)

3
{

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 utilizand Selection Sort

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

int i, j;

struct date temp;

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

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

if (dat[i].an > dat[j].an)

temp = dat[i];

dat[i] = dat[j];

dat[j] = temp;

}
4
}

//sortarea descendenta utilizand Bubble Sort

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

int i, j;

struct date temp;

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

for(j = 0; j < (n - 1 - i); ++j)

if(dat[j].an < dat[j + 1].an)

temp = dat[j];

dat[j] = dat[j + 1];

dat[j + 1] = temp;

void swap(struct evidenta *a, struct evidenta *b)

struct evidenta temp1 = *a;

*a = *b;

*b = temp1;

//sortarea descendenta dupa nume

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

int i, j;

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

for(j = 0; j < n - i - 1; j++)

if(evid[j].nume[0] < evid[j+1].nume[0])

swap(&evid[j], &evid[j+1]);

/*struct student temp1 = stud[j];


5
stud[j]=stud[j+1];

stud[j+1]=temp1;*/

//sortarea ascendenta dupa nume

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

int i,j, min;

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

min = i;

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

if(evid[min].nume < evid[j].nume)

min = j;

if(min != i)

swap(&evid[j], &evid[min]);

struct evidenta temp2 = evid[min];

temp2 = evid[i];

evid[i] = evid[min];

evid[min] = temp2;

//transmiterea datelor din functia void in functia main

int main ()

//declararea variabilelor

int i, n, j, temp, temp1, temp2;

printf ("Introduceti n = ");

scanf ("%d", &n);

6
struct evidenta evid[n];

struct date dat[n];

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

citire (evid, n);

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

afisare (evid, n);

data (dat, n);

afisare2 (dat, n);

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

SelectionSort (dat, n);

afisare2 (dat, n);

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

BubbelSort (dat, n);

afisare2 (dat, n);

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

Bubble_Sort(evid, n);

afisare(evid, n);

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

Selection_Sort(evid, n);

afisare(evid, n);

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

return 0;

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