« Introduction au langage C/Tableau matrices complexes » : différence entre les versions
Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (- d'utiliser + d’utiliser ) |
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n) |
||
Ligne 8 : | Ligne 8 : | ||
== Introduction == |
== Introduction == |
||
* Pour approfondir ce travail : "[[Mathc_Home_Edition_f01|Mathc]]". |
* Pour approfondir ce travail : "[[Mathc_Home_Edition_f01|Mathc]]". |
||
=== Le but === |
=== Le but === |
||
* Des tableaux de matrices permet de travailler avec des boucles. |
* Des tableaux de matrices permet de travailler avec des boucles. |
||
=== Les exemples === |
=== Les exemples === |
||
Ligne 25 : | Ligne 25 : | ||
=== La librairie === |
=== La librairie === |
||
Ligne 33 : | Ligne 33 : | ||
== Premier exemple == |
== Premier exemple == |
||
* On créé un tableau de double pointeur fixe (double **A[3];) |
* On créé un tableau de double pointeur fixe (double **A[3];) |
||
Ligne 39 : | Ligne 39 : | ||
* Ne pas oublier de libérer chaque élément du tableau. |
* Ne pas oublier de libérer chaque élément du tableau. |
||
=== Code source === |
=== Code source === |
||
<source lang="c"> |
<source lang="c"> |
||
Ligne 77 : | Ligne 77 : | ||
== Deuxième exemple == |
== Deuxième exemple == |
||
* L'intérêt des tableaux est d’utiliser une boucle. |
* L'intérêt des tableaux est d’utiliser une boucle. |
||
Ligne 83 : | Ligne 83 : | ||
* J’ai choisi de soulager la fonction main() en portant le maximum dans i_mZ_An() |
* J’ai choisi de soulager la fonction main() en portant le maximum dans i_mZ_An() |
||
=== Code source === |
=== Code source === |
||
<source lang="c"> |
<source lang="c"> |
||
Ligne 146 : | Ligne 146 : | ||
</source> |
</source> |
||
== Troisième exemple == |
== Troisième exemple == |
||
* Le tableau à 100 matrices de tailles différentes. |
* Le tableau à 100 matrices de tailles différentes. |
||
Ligne 152 : | Ligne 152 : | ||
* Ne pas oublier de libérer chaque élément du tableau. |
* Ne pas oublier de libérer chaque élément du tableau. |
||
=== Code source === |
=== Code source === |
||
<source lang="c"> |
<source lang="c"> |
Version du 1 août 2017 à 17:30
Introduction
- Pour approfondir ce travail : "Mathc".
Le but
- Des tableaux de matrices permet de travailler avec des boucles.
Les exemples
- Le premier exemple montre la méthode.
- Le second exemple automatise le travail (boucle for).
- Le troisième exemple nous montre qu’il n'y a aucune raison que les matrices soient toutes de tailles identiques.
La librairie
- Il faut utiliser la librairied'algèbre linéaire (n_1aa.zip).
- Indispensable pour tester les exemples de cette page.
- Le deuxième fichier n_1ab.zip donne des exemples sur les tableaux de matrices réelles et complexes.
Premier exemple
- On créé un tableau de double pointeur fixe (double **A[3];)
- On fait pointer chaque élément du tableau sur une matrice.
- Ne pas oublier de libérer chaque élément du tableau.
Code source
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
int main(void)
{
time_t t;
double **A[3];
int r = rp_I(5);
int c = rp_I(5);
srand(time(&t));
A[0] = r_mZ(i_mZ(r,c),9);
A[1] = r_mZ(i_mZ(r,c),9);
A[2] = i_mZ(r,c);
printf(" A0 : ");
p_mZ(A[0],5,0,5,0,6);
printf(" A1 : ");
p_mZ(A[1],5,0,5,0,6);
printf(" A0plsA1 : ");
p_mZ(add_mZ(A[0],A[1],A[2]),5,0,5,0,6);
f_mZ(A[0]);
f_mZ(A[1]);
f_mZ(A[2]);
return 0;
}
Deuxième exemple
- L'intérêt des tableaux est d’utiliser une boucle.
- Ici on initialise et on détruit le tableau dans une boucle for.
- J’ai choisi de soulager la fonction main() en portant le maximum dans i_mZ_An()
Code source
/* ------------------------------------ */
#include "w_a.h"
/* --------------------------------------------------- */
/* Initialisation d'un tableau de double pointeurs */
/* Cette fonction dépend de la feuille de travail */
/* Ici on veut des matrices de tailles alétoires [1..5] */
/* Initialiser avec des valeurs aléatoire [-9..9] */
/* Ce travail est effectué ici pour soulager main() */
/* --------------------------------------------------- */
void i_mZ_An(
double **A[],
int n
)
{
int i = 0;
int r = rp_I(5);
int c = rp_I(5);
for(;i<n;i++) A[i] = r_mZ(i_mZ(r,c),9);
}
/* ------------------------------------ */
void f_mZ_An(
double **A[],
int n
)
{
int i=0;
for(;i<n;i++)f_mZ(A[i]);
}
/* ------------------------------------ */
int main(void)
{
double **A[3];
int i=0;
time_t t;
srand(time(&t));
i_mZ_An(A,3);
add_mZ(A[0],A[1],A[2]);
for(;i<3;)
{
printf(" A%d : ",i);
p_mZ(A[i++],5,0,5,0,6);
}
f_mZ_An(A,3);
printf(" Press return to continue \n");
getchar();
return 0;
}
Troisième exemple
- Le tableau à 100 matrices de tailles différentes.
- Ne pas oublier de libérer chaque élément du tableau.
Code source
/* ------------------------------------ */
#include "w_a.h"
/* --------------------------------------------------- */
/* Initialisation d'un tableau de double pointeurs */
/* Cette fonction dépend de la feuille de travail */
/* Ici on veut des matrices de tailles alétoires [1..5] */
/* Initialiser avec des valeurs aléatoire [-9..9] */
/* */
/* LES MATRICES NON PAS TOUTES LA MEME TAILLE */
/* --------------------------------------------------- */
void i_mZ_An(
double **A[],
int n
)
{
int i = 0;
for(;i<n;i++) A[i] = r_mZ(i_mZ(rp_I(5),rp_I(5)),9);
}
/* ------------------------------------ */
void f_mZ_An(
double **A[],
int n
)
{
int i=0;
for(;i<n;i++)f_mZ(A[i]);
}
/* ------------------------------------ */
int main(void)
{
double **A[100];
int i=0;
time_t t;
srand(time(&t));
i_mZ_An(A,100);
for(;i<100;)
{
printf(" A%d : ",i);
p_mZ(A[i++],5,0,5,0,6);;
}
f_mZ_An(A,100);
printf(" Press return to continue \n");
getchar();
return 0;
}