olgha | Bonjour à tous,
Voilà j'ai écris un programme qui transforme une matrice en vecteur. Après compilation j'ai 0 erreur, 0 warning mais mon programme n'affiche rien. Pouvez-vous m'aider SVP.
"Code en C"
Code :
- [cpp]
- #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 dim1, int dim2);
- int main()
- {
- int const dimens1 = 4 , dimens2= 2 ;// on définit les dimensions de la matrice.
- int dimens= dimens1*dimens2;
- MATRIX mat_in;// matrice de départ
- VECTOR vect_out; //double *vect_out ;
- int i, j;
- //int i, j; // les indices des boucles.
- *vect_out = fmv(dimens1, dimens2);// incompatible types when assigning to type 'double *' from type 'double'
- return 0;
- }
- double fmv(int dim1, int dim2)
- {
- int i, j;
- int dim = dim1*dim2;
- VECTOR v_out;// vecteur à réccupérer
- MATRIX m_in;// matrice de depart
- puts ( " Matrice ==> Vecteur \n" ) ;
- // 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 ;
- /*indique que les autres pointeurs de lignes csorrespondent au début des autres lignes de la matrice*/
- for ( i = 1 ; i < dim1 ; ++i )
- m_in[i] = m_in[i-1] + dim2 ;
- for ( i = 0 ; i < dim1 ; ++i)
- {
- 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 = *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 0;
- }
|
[/cpp] Message édité par olgha le 30-04-2012 à 15:27:32
|