* Ces fonctions sont donnés pour ceux qui ne sont pas intéressés par la librairie.
* Il suffit de rajouter ces fonctions à celles du cours précédent pour créer sa propre librairie.
=== Présentation des fonctions ===
* Je rajoute deux fonctions pour imprimer les matrices.
* p_mZ() pour imprime à l'écran.
* fp_mZ() pour imprimer dans le fichier "aamatrix.txt"
** f_p=fopen("aamatrix.txt", "a");
** les matrices ce rajoutent les unes derrières les autres.
* Une fonction pour copier un tableau dans une matrice
** c_a_A_mZ(a,A);
* La fonction pour mettre à zéro la matrice.
** m_0_mZ();
=== Pour aller plus loin ===
* Dans la '''[https://drive.google.com/folderview?id=0B-KoQAOnU4FnWFJJUnNkN3h1bFU&usp=sharing librairie]''', voir fichier '''wbm.h''', vous pourrez récupéré les fonctions :
* add_mZ(), sub_mZ(), mul_mZ(), smul_mZ(), pow_mZ() ... pour vous faire la main.
== La fonction fp_mZ() ==
* Imprimer la matrice dans le fichier "aamatrix.txt".
* Si il y a plusieurs appels, les matrices ce rajoutent les unes derrière les autres.
=== Le code ===
* A ajouter dans le fichier de la [[C pointeurs/Matrices_complexes_2|librairie]].
<source lang="c">
/* ------------------------------------ */
/* Imprimer une matrice dans un fichier */
/* ------------------------------------ */
double **fp_mR(
double **A,
char MatrixName[],
int er,
int dr,
int n
)
{
FILE * fp = fopen("aamatrix.txt","a");
int r;
int c;
int n_c = FIRST;
int n_c_LAST;
int n_c_FIRST;
fprintf(fp,"%s",MatrixName);
while(n_c<A[C_SIZE][OF])
{
n_c+=n;
n_c_FIRST = n_c-n;
if(n_c<A[C_SIZE][OF])n_c_LAST = n_c;
else n_c_LAST = A[C_SIZE][OF];
for(r=FIRST; r<A[R_SIZE][OF]; r++)
{
fprintf(fp,"\n");
for (c=n_c_FIRST; c<n_c_LAST; c++)
fprintf(fp,"%+*.*f ",er,dr,A[r][c]);
}
fprintf(fp,"\n");
}
fprintf(fp,"\n");
fclose(fp);
return(A);
}
</source>
=== Appel de la fonction ===
* Remplace la fonction main() dans le fichier de la [[C pointeurs/Matrices_complexes_2|librairie]].
<source lang="c">
/* ------------------------------------ */
int main(void)
{
double **A = i_mZ(R4,C7);
double **B = i_mZ(R4,C4);
double **C = i_mZ(R3,12);
double **D = i_mZ(R5,C5);
fp_mZ(A,"Matrix A :\n", 0,0,0,0,C6);/* 6 colonnes par ligne */
fp_mZ(B,"Matrix B :\n", 4,0,0,0,C6);/* 4 espaces entre les nombres */
fp_mZ(C,"Matrix C :\n", 4,0,3,0,C6);/* 3 espaces entre les parties R_I */
fp_mZ(D,"Matrix D :\n", 4,1,3,1,C6);/* 1 chiffre après la virgule */
f_mZ(A);
f_mZ(B);
f_mZ(C);
f_mZ(D);
printf(" Open the file aamatrix.txt. \n\n Press return to continue ");
getchar();
return 0;
}
</source>
Dans le fichier :
Matrix A :
.
+0+0i +0+0i +0+0i +0+0i +0+0i +0+0i
+0+0i +0+0i +0+0i +0+0i +0+0i +0+0i
+0+0i +0+0i +0+0i +0+0i +0+0i +0+0i
+0+0i +0+0i +0+0i +0+0i +0+0i +0+0i
.
+0+0i
+0+0i
+0+0i
+0+0i
.
Matrix B :
.
+0+0i +0+0i +0+0i +0+0i
+0+0i +0+0i +0+0i +0+0i
+0+0i +0+0i +0+0i +0+0i
+0+0i +0+0i +0+0i +0+0i
.
Matrix C :
.
+0 +0i +0 +0i +0 +0i +0 +0i +0 +0i +0 +0i
+0 +0i +0 +0i +0 +0i +0 +0i +0 +0i +0 +0i
+0 +0i +0 +0i +0 +0i +0 +0i +0 +0i +0 +0i
.
+0 +0i +0 +0i +0 +0i +0 +0i +0 +0i +0 +0i
+0 +0i +0 +0i +0 +0i +0 +0i +0 +0i +0 +0i
+0 +0i +0 +0i +0 +0i +0 +0i +0 +0i +0 +0i
.
Matrix D :
.
+0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i
+0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i
+0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i
+0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i
+0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i +0.0+0.0i
{| class="wikitable"
|-
| fp_mZ(A, MatrixName[], N_N, VR, R_I, VI, C); || Imprimer la matrice "A"
* N_N espaces entre les nombres.
* VR chiffres après la virgule. (Réelles)
* R_I espaces entre les parties réelles et imaginaire.
* VI chiffres après la virgule. (Imaginaires)
* C colonnes par lignes.
|}
=== Petit jeu en C ===
* Remplace la fonction main() dans le fichier de la [[C pointeurs/Matrices_complexes_2|librairie]].
* Le même code que ci-dessus, en plus condensé.
* A maîtriser en deuxième lecture.
<source lang="c">
/* ------------------------------------ */
int main(void)
{
double **A = fp_mZ(i_mZ(R4,C7),"Matrix A :\n", 0,0,0,0,C6);
double **B = fp_mZ(i_mZ(R4,C4),"Matrix B :\n", 4,0,0,0,C6);
double **C = fp_mZ(i_mZ(R3,12),"Matrix C :\n", 4,0,3,0,C6);
double **D = fp_mZ(i_mZ(R5,C5),"Matrix D :\n", 4,1,3,1,C6);
f_mZ(A);
f_mZ(B);
f_mZ(C);
f_mZ(D);
printf(" Open the file aamatrix.txt. \n\n Press return to continue ");
getchar();
return 0;
}
</source>
== La fonction p_mR() ==
* Imprimer la matrice à l'écran.
=== Le code ===
* A ajouter dans le fichier de la [[C pointeurs/Matrices_complexes_2|librairie]].