Sunteți pe pagina 1din 6

Ministerul Educaţiei

al Republicii Moldova

Universitatea Tehnică a Moldovei

SI-191

RAPORT
despre lucrarea de laborator Nr. 3
la Structuri de Date si Algoritmi

Tema: Rezolvarea problemelor cu STRUCT în C


Varianta 25

A îndeplinit: Midrigan Ovidiu

Chişinău – 2020
Mersul lucrării:

Codul:
#include <stdio.h>
#include <stdlib.h>

int nr;

struct evidentaTrenurilor {
int nrTren;
char destinatia[100];
int oraPlecare;
int oraSosire;
int zileCirculatie;
};

int main( ){
int i;
printf("Introdu cate trenuri sunt: "); scanf("%d", &nr);
struct evidentaTrenurilor trenuri[nr];
introducere(trenuri);
afisare(trenuri);
int nnr[nr];
for(i=0;i<nr;i++){
nnr[i] = trenuri[i].nrTren;
}
selectionSort(nnr, nr);
printf("Numarele trenurilor sortate crescator prin Selection Sort:\n");
for(i=0;i<nr;i++){
printf("%d\n", nnr[i]);
nnr[i] = trenuri[i].oraSosire;
}
bubbleSort(nnr, nr);
printf("Orele de sosire sortate descrescator prin Bubble Sort:\n");
for(i=0;i<nr;i++){
printf("%d\n", nnr[i]);
}
return 0;
}

int introducere(struct evidentaTrenurilor trenuri[]){


int i;
for(i=0;i<nr;i++){
printf("\n\nIntrodu datele la trenul nr %d:\n\n", i+1);
printf("Numarul Trenului - "); scanf("%d", &trenuri[i].nrTren);
printf("Ora Plecarii - "); scanf("%d", &trenuri[i].oraPlecare);
printf("Ora Sosirii - "); scanf("%d", &trenuri[i].oraSosire);
printf("Zilele Circulatiei(1-zilnic,2-par,3-impar) - ");scanf("%d",
&trenuri[i].zileCirculatie);
printf("Destinatia - ");scanf("%s", &trenuri[i].destinatia);
}
return 0;
}

int afisare(struct evidentaTrenurilor trenuri[]){


int i;
for (i=0;i<nr;i++){
printf("\n\nTrenul cu nr %d: \n\n", i+1);
printf("Numarul Trenului - %d\n", trenuri[i].nrTren);
printf("Destinatia - %s\n", trenuri[i].destinatia);
printf("Ora Plecare - %d\n",trenuri[i].oraPlecare);
printf("Ora Sosire - %d\n", trenuri[i].oraSosire);
printf("Zile Circulatiei - %d\n", trenuri[i].zileCirculatie);
}
return 0;
}

void selectionSort(int *a, int len){


int max,temp,i,j;
for(i=0;i<len;i++){
max = i;
for(j=i+1; j<len;j++){
if(a[j] < a[max])
max = j;
}
temp = a[i];
a[i] = a[max];
a[max] = temp;
}
}

void bubbleSort(int *a, int len){


int temp,i,j;
for(i=0; i< len-1;i++){
for(j=0; j< len- i -1;j++){
if(a[j] < a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
Output:

Introdu cate trenuri sunt: 3

Introdu datele la trenul nr 1:

Numarul Trenului - 1201


Ora Plecarii - 1500
Ora Sosirii - 1555
Zilele Circulatiei(1-zilnic,2-par,3-impar) - 1
Destinatia – Chisinau

Introdu datele la trenul nr 2:

Numarul Trenului - 1301


Ora Plecarii - 1600
Ora Sosirii - 1655
Zilele Circulatiei(1-zilnic,2-par,3-impar) - 1
Destinatia – Kiev

Introdu datele la trenul nr 3:

Numarul Trenului - 2441


Ora Plecarii - 1430
Ora Sosirii - 1600
Zilele Circulatiei(1-zilnic,2-par,3-impar) - 2
Destinatia - Madrid

Trenul cu nr 1:

Numarul Trenului - 1201


Destinatia - Chisinau
Ora Plecare - 1500
Ora Sosire - 1555
Zile Circulatiei - 1

Trenul cu nr 2:
Numarul Trenului - 1301
Destinatia - Kiev
Ora Plecare - 1600
Ora Sosire - 1655
Zile Circulatiei - 1

Trenul cu nr 3:

Numarul Trenului - 2441


Destinatia - Madrid
Ora Plecare - 1430
Ora Sosire - 1600
Zile Circulatiei – 2

Numarele trenurilor sortate crescator prin Selection Sort:


1201
1301
2441
Orele de sosire sortate descrescator prin Bubble Sort:
1655
1600
1555

Concluzie: În aceasta lucrare de laborator am lucrat cu functia Struct în


C și am rezolvat un exercițiu în care am folosit și sortari.

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