Skip to content

Instantly share code, notes, and snippets.

@iamandrewluca
Created March 20, 2019 08:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iamandrewluca/9d6212f5cb106877c0123556562f3e35 to your computer and use it in GitHub Desktop.
Save iamandrewluca/9d6212f5cb106877c0123556562f3e35 to your computer and use it in GitHub Desktop.
Alocarea dinamica a unui tablou bidimensional
#include <stdio.h>
#include <conio2.h>
#include <stdlib.h>
int **a, n, m, i, j;
int main(void){
// citesti numarul de linii
printf("Dati numarul de linii >> ");
scanf("%d", &n);
// citesti numarul de coloane
printf("Dati numarul de coloane >> ");
scanf("%d", &m);
// alochezi lui a (care este pointer la pointer) o lista de n pointeri
a = (int **)malloc(n * sizeof(int *));
// alternativa c++
// a = new int*[n];
// pentru fiecare pointer creat alochezi o lista de intregi
for(i = 0; i < n; i++){
// iaca aici pentru elementul a[i] creezi o lista de m elemente intregi
a[i] = (int *)malloc(m * sizeof(int));
// alternativa c++
// a[i] = new int[n];
}
// deja mai departe lucrezi cu tabloul cum iti place
// si te adresezi la el cu indexi a[i][j] ca la matrice
printf("Initializam tabloul:\n");
for(i = 0; i < n; i++){
for(j = 0; j < m; j++){
printf("a[%d][%d] >> ", i+1, j+1);
scanf("%d", &a[i][j]);
}
}
printf("Matricea data:\n\n");
for(i = 0; i < n; i++){
for(j = 0; j < m; j++){
printf("%d ", a[i][j]);
}
printf("\n");
}
// asta se foloseste pentru eliberare memorie de matricea data
// deodata fiecare element a[i]
// caruia a fost alocata o lista de intregi este eliberata
for(i = 0; i < n; i++){
// se elibereaza fiecare element a[i] care are cite m compponente
free(a[i]);
// alternativa c++
// delete [] a[i];
}
// free(a) se elibereaza lista initialza de pointeri
free(a);
// alternativa c++
// delete [] a;
getch();
return(0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment