1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include <stdio.h>// pour les printf et puts
#include <stdlib.h>// pour les malloc et free
//#include <time.h>
//#include <math.h>
typedef double TYPE ;
typedef TYPE *VECTOR ;
typedef TYPE **MATRIX ;
// transformation d'une matrice en vecteur
double fmv(int const dim1, int const dim2, int dim, double **m_in);
int main()
{
int const dimens1 = 4 , dimens2= 2 ;// on définit les dimensions de la matrice.
int dimens=8;
double **mat_in;// matrice de départ
double vect_out[dimens]; //double *vect_out ;
int i, j;
//int i, j; // les indices des boucles.
vect_out[dimens] = fmv(dimens1, dimens2, dimens, mat_in);// incompatible types when assigning to type 'double *' from type 'double'
return 0;
}
double fmv(int const dim1, int const dim2, int dim, double **m_in)
{
int i;
int j;
double v_out[dim] ;// vecteur de départ
// on va créer une matrice et la remplir par des valeurs reconnaissables
m_in = (MATRIX) malloc( dim1 * sizeof(VECTOR) );
if ( NULL == m_in )
return EXIT_FAILURE ;
*m_in = (VECTOR) malloc( dim * sizeof(TYPE) );
if ( NULL == *m_in )
return EXIT_FAILURE ;
/*indiquer que les autres pointeurs de lignes correspondent au début des autres lignes de la matrice*/
//for ( int i = 1 ; i < dim1 ; ++i )
for ( i = 0 ; i < dim1 ; ++i)
m_in[i] = m_in[i-1] + dim2 ;
{
for (j = 0 ; j < dim2 ; ++j)
m_in[i][j] = (TYPE)(10*i+j);
}
for ( i = 0 ; i < dim1 ; ++i)
{
for ( j = 0 ; j < dim2 ; ++j )
printf( " m_in[%d][%d] = %g \n" , i, j, (double)m_in[i][j] ) ;
}
printf(" ") ;
v_out[dim] = **m_in ; // là le vecteur v_out est équivalent à la matrice m_in
//debut des verifications
printf( " On fait les verifications : " ) ;
printf( " pour m_in : %p \n", m_in ) ;
printf( " pour *m_in : %p \n", *m_in ) ;
printf( " pour v_out : %p \n", v_out ) ;
puts ( " OK pour les adresses \n" );
for ( i = 0 ; i < dim ; ++i )
printf( " v_out[%d] = %g \n" , i, (double)v_out[i] );
puts ( " OK aussi pour les valeurs \n" ) ;
// fin des verifications
//free( *m_in ) ;
//free( m_in ) ;
return v_out[dim];
} |
Partager