Sunteți pe pagina 1din 4

MODEL

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

Departamentul Informatică și Ingineria Sistemelor

RAPORT
Lucrarea de laborator nr.4
la Programarea Calculatoarelor
Varianta 13

A efectuat:
st. gr. CR-213 Tabureanu Marian

A verificat: asis.univ.Tincu Cristian

Chişinău -2021
Lucrare de laborator Nr.4

Tema: Alocarea dinamică a memoriei pentru tablourile bidimensionale. Utilizarea funcţiilor


şi a pointerilor

Scopul lucrării: Programarea algoritmilor de prelucrare a tablourilor


bidimensionale prin utilizarea funcţiilor, pointerilor şi alocarea dinamică a memoriei
pentru tablou.

Formularea condiții problemei: Pentru tabloul bidimensional dat din n


linii şi m coloane să se afişeze la ecran următorul meniu de opţiuni:

1. Alocarea dinamică a memoriei pentru tablourile bidimensionale


2. Introducerea elementelor tabloului de la tastatură
3. Completarea tabloului cu valori aleatorii
4. Să se sorteze a doua şi penultima linie ale tabloului în ordine descendentă cu ajutorul
metodei de sortare prin selecţie şi schimb.
5. Afișarea elementelor tabloului la ecran
6. Eliberarea memoriei alocate pentru tablou
0. Ieșire din program

Să se elaboreze funcţiile pentru realizarea opţiunilor


meniului.

Textul programului in limbajul “C”:


#include<stdio.h> #include<conio.h> #include<stdlib.h>

void Input1(int** tab, int n, int m){


printf("Intoducem tabloul: \n"); for (int i = 0; i < n; i++)for (int j = 0; j < m; j+
+)
scanf("%d", &tab[i][j]); printf("Tabloul a fost introdus\n");}

void Input2(int** tab, int n, int m){


for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
tab[i][j] = rand() % 100;}

void Sort(int** tab, int n, int m){


int k = 1, temp; int j;
int i;
for (i = 0; i < m - 1; i++)
for (j = i + 1; j < m; j++)
if (tab[k][j] > tab[k][i]) {temp = tab[k][j]; tab[k][j] = tab[k][i]; tab[k][i] = temp;}
k = n - 2;
for ( i = 0; i < m - 1; i++)
for (j = i + 1; j < m; j++)
if (tab[k][j] > tab[k][i]){temp = tab[k][j]; tab[k][j] = tab[k][i]; tab[k][i] = temp;}}

void PrintMatr(int** tab, int n, int m){


printf("Tabloul: \n");
for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++)printf("%d\t", tab[i][j]);
printf("\n");}}

int main() {
int** tab = NULL, n, m, p = 0,i; while (p != 7) {
printf("Menu\n1 - Alocarea tabloului de n linii si m coloane\n2 - Introducerea
datelor de la tastatura\n"); printf("3 - Introducerea unor date random in
tablou\n4 - Sortarea tabloului\n");
printf("5 - Afisarea tabloului\n6 - Eliberarea memoriei\n7 - Iesire din
program\n"); scanf("%d", &p);
switch (p)
{ case 1:
printf("Rinduri: "); scanf("%d", &n);
printf("Coloane: "); scanf("%d", &m); tab = (int**)malloc(n * sizeof(int*));
for (int i = 0; i < n; i++) {
tab[i] = (int*)malloc(m * sizeof(int)); for (int j = 0; j < m; j++)
tab[i][j] = 0;}
printf("Tabloul din %d linii si %d coloane a fost creata\n", n, m);
getch(); break;
case 2:Input1(tab, n, m);getch(); break;
case 3:Input2(tab, n, m);printf("Tabloul a fost completata cu numere
random\n");getch(); break;
case 4:Sort(tab, n, m); printf("Sortarea\n");getch(); break;
case 5:PrintMatr(tab, n, m);getch(); break;
case 6:for (int i = 0; i < n; i++)free(tab[i]);free(tab);printf("Tabloul a fost
stearsa\n");getch(); break;
case 7:return 0; break;
default:printf("Try again\n");getch(); break; }}
getch(); return 0;}
Rezultate:

Concluzie:
În urma elaborării lucrării de laborator ne-am format deprinderi de lucru cu
funcții și putem observa cu ușurință utilitatea acestora atunci când avem nevoie de
a efectua anumite instrucțiuni in mod repetat.
Tot odată utilizând funcțiile obținem o claritate mai bună a codului și putem
apela o funcție de câte ori dorim și putem să o utilizăm și pentru parametri diferite.
De asemenea ne-am format deprinderi de lucru în ceea ce privește alocarea
dinamică a memoriei și a pointerilor.Alocând dinamic memorie putem gestiona
mai eficient memoria calculatorului și acest fapt este ușor de observat atunci când
calculatorul are puțină memorie la dispoziție sau programele sunt voluminoase și
necesită cantități mari de memorie.

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