Mathc matrices/Fichiers c : i dup


Étude du code


Étudions la fonction :

/* ----------------------------------------- */
/* Same as i_mR() but work with the size     
   in memory 
   
   ex :  i_RC_mR(M[R_SIZE][C0],M[C_SIZE][C0] */
/* ------------------------------------ */   
double **i_RC_mR(
int      R,                // A[R_SIZE][C0]
int      C                 // A[C_SIZE][C0]
)
{
return(i_mR(--R,--C));
}
/* ------------------------------------ */ 
/* ------------------------------------ */


utiliser cette fonction.

double **T = i_RC_mR(A[R_SIZE][C0],A[C_SIZE][C0]);


En fait on initialise la taille de la matrice directement en lisant en mémoire celle-ci, au lieu d'utiliser rsize_R(); et csize_R();


On se rappel qu'avant de mémoriser la taille de la matrice dans la fonction i_mR(); on ajoute la ligne zéro et la colonne zéro.

Il faut donc les retrancher avant l'appel de la fonction i_mR(); qui va naturellement les rajouter un peu plus tard.


/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
int main(void)
{
 double **A     =    i_mR(            R3,         C5   );
 double **B     =    i_mR(    rsize_R(A),   csize_R(A) );
 double **C     = i_RC_mR( A[R_SIZE][C0],A[C_SIZE][C0] );
 
   clrscrn();

   printf(" A :");
   r_mR(A,9);
   p_mR(A,S8,P0,C7);
   	
   printf(" B :");
   c_mR(A,B);
   p_mR(B,S8,P0,C7);

   printf(" C :");
   c_mR(A,C);
   p_mR(C,S8,P0,C7);
   stop();
   
   f_mR(A);
   f_mR(B);  
   f_mR(C);  
     
   return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


 A :
      +2       -1       -6       +2       -7 
      -6       -6       +6       +7       +8 
      +9       -7       +9       -9       -2 

 B :
      +2       -1       -6       +2       -7 
      -6       -6       +6       +7       +8 
      +9       -7       +9       -9       -2 

 C :
      +2       -1       -6       +2       -7 
      -6       -6       +6       +7       +8 
      +9       -7       +9       -9       -2 

 Press return to continue.