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
Matrice
struct Matrice { float *tab; int nl, nc; };
Ajoutez ensuite le code pour les fonctions
get
etset
permettant 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_matrice
etaffiche
.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_id
etset_0
permettant 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_id
retournera 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
init
permettant 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
Vecteur
s’occupera de ces cas-là
La correction exercice langage C (voir page 2 en bas)