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;
}
-------------------------------------------------------------------------------------
0 comments:
Post a Comment