Aller au contenu

Mathc complexes/Fichiers c : transpose

Un livre de Wikilivres.


Application

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

transpose.c
/* ------------------------------------ */
/*  Save as :  transpose.c              */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **xtranspose_mZ(
double **A,
double **A_t
)
{
int r,m;
int c,n;

  canItranspose_mZ(A,A_t,"transpose_mZ();","(A or A_t)");

  for (   r=R1, m=C1; r<A[R_SIZE][C0]; r++,   m+=C2)
    for ( c=C1, n=R1; c<A[C_SIZE][C0]; c+=C2, n++)
        {
         A_t[n][m]    = A[r][c];;
         A_t[n][m+C1] = A[r][c+C1];;
        }
        
return(A_t);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r,int c)
{
double **A   =         r_mZ(   i_mZ(r,c),9);
double **A_t = transpose_mZ(A, i_mZ(c,r));

  clrscrn();
  printf(" A \n");
  p_mZ(A, S5,P0, S4,P0,C6);

  printf("\n A^t  (transpose)\n");
  p_mZ(A_t, S5,P0, S4,P0,C6);

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

  srand(time(&t));
  
  do 
         fun(rp_I(R6),rp_I(C6));
        
    while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
La fonction transpose_mZ(); échange les lignes et les colonnes.

Exemple de sortie écran :

A 

   +4  -5i    -7  -5i    -5  -3i    -1  +2i 
   +8  +4i    -1  -1i    +4  -1i    -1  -1i 


 A^t  (transpose)

   +4  -5i    +8  +4i 
   -7  -5i    -1  -1i 
   -5  -3i    +4  -1i 
   -1  +2i    -1  -1i 


 Press return to continue
 Press X      to stop