Mathc matrices/Fichiers c : p01b

Un livre de Wikilivres.


Étude du code


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

p01b.c
/* ------------------------------------ */
/*  Save as :   p01b.c                  */
/* ------------------------------------ */
#include "v_a.h"

/* ------------------------------------ */
void p2_mR(
double **A,
int dr
)
{
int r;
int c;

 	for     (r = R1; r < A[R_SIZE][C0]; r++)
 	   {
 	    for (c = C1; c < A[C_SIZE][C0]; c++)

            printf("%+.*f ",dr,A[r][c]);
            
         printf("\n");
        }
}

/* ------------------------------------ */
void fun(int r,int c)
{
double **A     = r_mR(i_mR(r,c),9);

  clrscrn();

  printf(" A[R%d,C%d] : \n",rsize_R(A),csize_R(A));
  p_mR(A,S4,P0,C8);

  p2_mR(A, P3);

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

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


La fonction p_mR(); existant déjà dans la librairie je l'ai ici renommé p2_mR();


Exemple de sortie écran :

 A[R3,C2] : 

  +9   -6 
  -1   -4 
  +3   -6 

+9.000 -6.000 
-1.000 -4.000 
+3.000 -6.000 

 Press return to continue
 Press X      to stop


Nous avons commencé par contrôler le nombre de chiffres à afficher après la virgule.

J'ai ajouté le signe + dans l'espace de formatage pour que le signe - qui déplace une colonne vers la droite ne pose plus de problème.

Le caractère * sera remplacé par la valeur choisie.

/* Ici si dr = 3     (P3) */

 printf("%+.*f ",dr,A[r][c]);

/* est équivalent à   */

printf("%+.3f ",A[r][c]);