Pages

Friday, April 4, 2014

Learning C 4 Structures and Dynamic Allocation

Ok, this is a simple app in C with structures and dynamic allocation. This app save an image A[][] ( elements of the matrix are pixels) in an array by the formula: k=n*i+j, where k,i,j are indexes of the array/ matrix and n is the number of colls of the matrix.










For example:
1 2 3
4 5 6 = A[3][3] => v[9]=1 2 3 4 5 6 7 8 9
7 8 9
-------------------------------------------------------------------------------------

#include<stdio.h>
#include<stdlib.h>
typedef struct
{
    int **matr;
    int lin; // nr de linii
    int col; // nr de coloane ale matricii
} Matrice;
int *v,k,i,j,n,m;
Matrice A;
// citire matrice
void citire_matr(Matrice A){
     for(i=0;i<A.lin;i++)
                     for(j=0;j<A.col;j++)
                                     scanf("%d",&A.matr[i][j]);
     }
//afisare matrice
void afisare_matrice(Matrice A){
     for(i=0;i<A.lin;i++)
                     {for(j=0;j<A.col;j++)
                                     printf("%d ",A.matr[i][j]);
                     printf("
");
                     }
     printf("
");
     }
//afisare vector
void afisare_vector(int *v){
     for(k=0;k<A.lin*A.col;k++)
                       printf("%d ",v[k]);
     printf("
");
     }
//transformare matrice->vector
void matr_vector(Matrice A, int *v){
      for(i=0;i<A.lin;i++)
                     for(j=0;j<A.col;j++)
                                     v[A.col*i+j]=A.matr[i][j];
     }
int main(){
A.matr=(int **) malloc(A.lin*sizeof(int *));
v=(int *)malloc(2*sizeof(int *));
for(i=0;i<A.lin;i++) // aloca memorie pt elem din linia i
if((A.matr[i]=(int *)malloc(A.col*sizeof(int)))==NULL || v==NULL)
      {
      printf("
 memorie insuficienta");
      exit(1) ;
      }
printf("Nr de linii si numarul de coloane este:");scanf("%d %d",&A.lin,&A.col);
citire_matr(A);
printf("Afisare matrice:
");
afisare_matrice(A);
matr_vector(A,v);
printf("Afisare vector:
");
afisare_vector(v);
free(A.matr);
free(v);
system("pause");
return 0;
}
-------------------------------------------------------------------------------------

Related Posts by Categories

0 comments:

Post a Comment