Sunteți pe pagina 1din 10

ANEXA A

Raport
pentru lucrarea de laborator Nr.1

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
/*sa se scrie un program C pentru expresia aritmetica data, tinand cond de precedenta operatiilor*/

#include <stdio.h>

//citire afiare sortare

void citire(int arr[100], int n)

/*int arata ca variabilele listate sunt de tip integer*/

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

printf("arr[%i]=",i);

scanf("%i", &arr[i]);

void afisare(int arr[100], int n)

/*afisarea numarului de coloane a matricei unidimensionale*/

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

printf("%i \t", arr[i]);

/*citirea si afisarea tabloului utilizand metoda de selectoe Bubble Sort*/

void BubbleSort(int arr[100], int n)

{
int i, j, temp;

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

if ((arr[i]>=arr[0] && arr[i]<=arr[n-1])||(arr[i]<=arr[0] && arr[i]>=arr[n-1]))

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

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

if(arr[j] < arr[j + 1])

temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

/*citirea si afisarea tabloului utilizand metoda de selectoe Selection Sort*/

void SelectionSort (int arr[100], int n)

int i, j, temp1;

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

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

if(arr[i] > arr[j])

temp1 = arr[i];

arr[i] = arr[j];

arr[j] = temp1;

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

printf("%d\t", arr[i]);

int main()

int arr[100], n, i, j, temp, temp1;

/*int arata ca variabilele listate sunt de tip integer*/

printf("Lungimea tabloului este: \n");

/* converteste, formateaza si tipareste argumentele sale la iesire*/

scanf("%d", &n);

/*Apelarea functiei voin in main*/

printf("\nValorile array-ului sunt:\n");

citire(arr, n);

printf("\nArray-ul final este:\n");

afisare(arr, n);

printf("\nSortarea elementelor aplicand Bubble Sort: \n");

BubbleSort(arr, n);

afisare(arr, n);

printf("\nSortarea elementelor aplicand Selection Sort: \n");

SelectionSort(arr, n);

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

return 0;

3.Codul programului cu pointeri, având comentarii relevante în el;


/*sa se scrie un program C pentru expresia aritmetica data, tinand cond de precedenta operatiilor*/

#include <stdio.h>

//citire afiare sortare

void citire(int *arr, int n)

/*int arata ca variabilele listate sunt de tip integer*/

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

printf("arr[%i]=",i);

scanf("%i",(arr+i));
}

void afisare(int *arr, int n)

/*afisarea numarului de coloane a matricei unidimensionale*/

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

printf("%i \t",*(arr+i));

/*citirea si afisarea tabloului utilizand metoda de selectoe Bubble Sort*/

void BubbleSort(int *arr, int n)

int i, j, temp;

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

if ((arr[i]>=arr[0] && arr[i]<=arr[n-1])||(arr[i]<=arr[0] && arr[i]>=arr[n-1]))

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

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

if(arr[j] < arr[j + 1])

temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

/*citirea si afisarea tabloului utilizand metoda de selectoe Selection Sort*/

void SelectionSort (int *arr, int n)


{

int i, j, temp1;

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

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

if(arr[i] > arr[j])

temp1 = arr[i];

arr[i] = arr[j];

arr[j] = temp1;

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

printf("%d\t", *(arr+i));

int main()

int arr[100], n, i, j, temp, temp1;

/*int arata ca variabilele listate sunt de tip integer*/

printf("Lungimea tabloului este: \n");

/* converteste, formateaza si tipareste argumentele sale la iesire*/

scanf("%d", &n);

/*Apelarea functiei voin in main*/

printf("\nValorile array-ului sunt:\n");

citire(arr, n);

printf("\nArray-ul final este:\n");

afisare(arr, n);

printf("\nSortarea elementelor aplicand Bubble Sort: \n");

BubbleSort(arr, n);

afisare(arr, n);

printf("\nSortarea elementelor aplicand Selection Sort: \n");

SelectionSort(arr, n);
/*return 0 este considerat ca "o stare de succes" a functionarii programului*/

return 0;

5.Programul sarcinii nr. 2:


Conditia: A scrie un program in C care citeste si afiseaza un tablou unidimensional, dupa care acelasi tablou sa fie
sortat crescator aplicand metoda Merge Sort si descrescator aplicand metoda Insertion Sort. Desenati schema bloc a
programului.
/*sa se scrie un program C pentru expresia aritmetica data, tinand cond de precedenta operatiilor*/

#include <stdio.h>

#include <stdlib.h>

//citire si afiare array-ului

void citire (int arr[100], int n)

int i;

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

printf("arr[%i] = %i\n", i, arr[i] = rand() % 50 + 100);

//scanf("%i", &arr[i]);

void afisare (int arr[100], int n)

int i;

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

// printf("arr[%i] = %i \n", i, arr[i]);

//Sortarea array-ului aplicand metoda Merge Sort

void merge_sort(int i, int j, int arr[100], int aux[100]) {

if (j <= i) {

return; // subsecțiunea este goală sau un singur element

int mid = (i + j) / 2;

merge_sort(i, mid, arr, aux);

merge_sort(mid + 1, j, arr, aux);

int b = i;
int c = mid + 1;

int k; // k este contorul buclei

for (k = i; k <= j; k++) {

if (b == mid + 1) {

aux[k] = arr[c];

c++;

} else if (c == j + 1) {

aux[k] = arr[b];

b++;

} else if (arr[b] < arr[c]) {

aux[k] = arr[b];

b++;

} else {

aux[k] = arr[c];

c++;

for (k = i; k <= j; k++) { // copiem elementele din aux[] în a[]

arr[k] = aux[k];

//Sortarea array-ului aplicand metoda Insertion Sort

void insertion_sort(int arr[100], int n)

int i, j, key;

/*Sortarea elementelor descrescator*/

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

j = i;

while(j > 0 && arr[j] > arr[j - 1])

key = arr[j];

arr[j] = arr[j-1];

arr[j-1] = key;

j--;

}
//afisarea array-ului sortat

void afisare_sort(int arr[100], int n)

int i;

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

printf("%d ", arr[i]);

printf("\n");

//apelarea functiei void in main

int main()

int a[100], aux[100], arr[100], n, i, d, s, j, key;

/*int arata ca variabilele listate sunt de tip integer*/

printf("Lungimea array-ului este:\n");

scanf("%d", &n);

printf("Afisarea array-ului:\n");

citire(arr, n);

afisare(arr, n);

merge_sort(0, n - 1, arr, aux);

printf("Array-ul sortat crescator este:\n");

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

printf("%d\n", arr[i]);

printf("Array-ul sortat descrescator este:\n");

insertion_sort(arr, n);

afisare_sort(arr, n);

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

return 0;

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