0% au considerat acest document util (0 voturi)
40 vizualizări7 pagini

NR 4

Documentul prezintă un program C care permite prelucrarea tablourilor bidimensionale prin funcții și pointeri. Programul alocă dinamic memorie pentru un tablou, introduce/generează aleator elementele acestuia, sortează coloanele în ordine descrescătoare și afișează/eliberează memoria tabloului.

Încărcat de

Graid Icen
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
40 vizualizări7 pagini

NR 4

Documentul prezintă un program C care permite prelucrarea tablourilor bidimensionale prin funcții și pointeri. Programul alocă dinamic memorie pentru un tablou, introduce/generează aleator elementele acestuia, sortează coloanele în ordine descrescătoare și afișează/eliberează memoria tabloului.

Încărcat de

Graid Icen
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd

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

Moldova

Universitatea Tehnică a Moldovei

RAPORT
Lucrarea de laborator nr. 4
la Programarea Calculatoarelor

A efectuat:
st. gr. RM-201 Ghirea Gabriel

A verificat:
dr., conf. univ. S. Stefan

Chişinău -2020
Lucrarea 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.

Sarcina (cоnform variantelor):

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. Sortarea elementelor tabloului (cоnform variantelor)

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.

Varianta 6.
Să se sorteze coloanele tabloului în ordine descendentă cu ajutorul metodei de sortare prin
selecţie şi schimb.

Codul programului în limbajul C:


#include<stdio.h>

#include<stdlib.h>

#include<time.h>

float **addmem(int n,int m);

void addnum(float **a,int n,int m);

void randnum(float **a,int n,int m);


void sortline(float **a,int n,int m);

void show(float **a,int n,int m);

void freemem (float **a,int n);

int main(void)

int n,m,nr;

float **a;

srand(time(NULL));

printf("Prelucrarea tablourilor bidimensionale\n");

printf("Numarul de linii:\n");

scanf("%d",&n);

printf("Numarul de coloane:\n");

scanf("%d",&m);

while(1)

printf("\[Link] dinamica a memoriei pentru tablou bidimensional.\n");

printf("[Link] elementelor tabloului.\n");

printf("[Link] tabloului cu elemente aleatorii.\n");

printf("[Link] elementelor tabloului.\n");

printf("[Link] elementelor tabloului la ecran.\n");

printf("[Link] memoriei alocate pentru tablou.\n");

printf("[Link] din program.\n");

scanf("%d",&nr);

switch(nr)

case 1:
a = addmem(n,m);

break;

case 2:

addnum(a,n,m);

break;

case 3:

randnum(a, n, m);

break;

case 4:

sortline (a, n, m);

case 5:

show(a, n, m);

break;

case 6:

freemem(a,n);

break;

case 0:

printf("\nExit\n");

return 0;

default :

printf("Error\n\n");

float **addmem(int n,int m)

int i;
float **a;

a=(float**)malloc(n*sizeof(float*));

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

a[i]=(float*)malloc(m*sizeof(float));

if (a==NULL)

printf("Error\n\n");

else

printf("Succes\n\n");

return a;

void addnum(float **a,int n,int m)

int i,j;

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

for(j=0; j<m; j++)

scanf("%f",&a[i][j]);

void randnum(float **a,int n,int m)

srand(time(NULL));

int i,j;

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

for(j=0;j<m;j++)

a[i][j]=rand()%100-rand()%100;

}
void sortline(float **a,int n,int m)

int i,j,x;

float temp;

for(x=0; x<n; x++){

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

for(j=0; j<m; j++){

if(a[i][j]<a[i+1][j]){

temp=a[i][j];

a[i][j]=a[i+1][j];

a[i+1][j]=temp;}}}}

void show(float **a,int n,int m)

int i,j;

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

for(j=0;j<m;j++){

printf("%.2f\t",a[i][j]);}

printf("\n");}

void freemem (float **a,int n)

int i;

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


free(a[i]);

free(a);

return;

Rezultatele testării și funcţionării programului:

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