Aller au contenu

Mathc matrices/Fichiers c : sub r

Un livre de Wikilivres.


Application

Installer et compiler ce fichier dans votre répertoire de travail.

sub.c
/* ------------------------------------ */
/*  Save as :   sub.c                   */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r,int c)
{
double **A     = i_mR(r,c);
double **B     = i_mR(r,c);
double **AmnsB = i_mR(r,c);

  clrscrn();

  printf(" A : ");
  p_mR(r_mR(A,99),S5,P0,C6);

  printf(" B : ");
  p_mR(r_mR(B,99),S5,P0,C6);

  printf(" AmnsB : ");
  p_mR(sub_mR(A,B,AmnsB),S5,P0,C6);

  f_mR(A);
  f_mR(B);
  f_mR(AmnsB);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
  
   do 
        fun(rp_I(R4),rp_I(C6));
        
    while(stop_w());
        
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */

Ici on initialise les valeurs des matrices dans la fonction qui les imprime.

Cela est possible car ces fonctions retournent toutes un pointeur sur la matrice sur laquelle elles travaillent. (voir le code dans les fichiers h)


On pourrait très bien écrire la fonction r_mR(); sans qu'elle ne retourne ce quoi que soit. Par exemple ;

 double **r_mR(double **A,int n)
 void     r_mR(double **A,int n)

Il suffirait de supprimer

   return(A);

pour que cela fonctionne parfaitement.

Par contre le code

  printf(" A : ");
  p_mR((r_mR(A,99)),5,0,C6);

devrait obligatoirement s'écrire :

  printf(" A : ");
  r_mR(A,99));
  p_mR(A,5,0,C6);

Exemple de sortie écran :

 A : 
  +16   -85   +26 
  +68   -83   -53 
  +44   +96   -69 
  +74   +54   +78 

 B : 
  -55   -25   -63 
  +44   +28   +12 
   +8   +44   -99 
  +18   -99   +40 

 AmnsB : 
  +71   -60   +89 
  +24  -111   -65 
  +36   +52   +30 
  +56  +153   +38 


 Press return to continue
 Press X      to stop