Dans cet exercice, vous allez mettre en œuvre les fonctions d’algèbre linéaire que vous avez vues en cours.
- Commencez par définir une structure
Matricestruct Matrice { float *tab; int nl, nc; };Ajoutez ensuite le code pour les fonctions
getetsetpermettant d’accéder aux éléments du tableau. Comme suggéré dans le cours, vérifiez que la ligne et la colonne auxquelles on désire accéder sont bien valides. Ajoutez également les fonctionsalloue_matriceetaffiche.Toutes ces fonctions ont été vues en cours, et leur implémentation ne devrait donc pas poser de problèmes.
- Rédigez le code d’une fonction
copie, dont le but est de copier le contenu d’une matrice dans une autre. La fonction prendra deux arguments: un pointeur sur la matrice source et un autre sur la matrice destination. On suppose que la matrice destination a déjà été allouée. La fonction prendra soin de vérifier que les deux matrices ont bien la même taille, avant d’effectuer la copie. - Ecrivez deux fonctions intitulées
set_idetset_0permettant d’initialiser une matrice à la matrice identité et à la matrice nulle, respectivement. Les en-têtes de ces fonctions devront être :bool set_id(Matrice *mat); void set_0(Matrice *mat);
La fonction
set_idretournera false si la matrice passée en paramètre n’est pas carrée, et true si l’opération s’est bien passée. - Implémentez une fonction
initpermettant d’initialiser une matrice. Vous allez écrire une fonction différente pour chaque type de matrice que vous voudrez initialiser. Par exemple, pour initialiser une matrice 2 x 2 , vous devrez écrire la fonctionvoid init(Matrice *matrice, float c1, float c2, float c3, float c4)
alors que pour initialiser une matrice 2 x 3, il faudra utiliser
void init(Matrice *matrice, float c1, float c2, float c3, float c4, float c5, float c6)car elle contient 6 coefficients. Cette dernière fonction peut, par ailleurs, autant servir à initialiser une matrice 3 x 2 que 2 x 3. Soyez donc bien attentifs lorsque vous l’implémentez. On supposera qu’une matrice à 6 coefficients n’a pas la forme 1 x 6 ou 6 x 1, car la structure
Vecteurs’occupera de ces cas-là
La correction exercice langage C (voir page 2 en bas)