MATH_MatriceLigne    [Algebre]

Par Antoine Galmiche (Math4D v1)
Nouvelle recherche
Si (Faux)
   ` MATH_MatriceLigne [Antoine Galmiche 30/07/2002]
   ` ----------------------------------
   ` La méthode permet de réaliser des opérations sur une ou deux lignes
   ` d'une matrice régulière
   ` Utiliser MATH_ObjetVersMatrice pour travailler avec une matrice correcte
   ` ---------------------------------
   ` MATH_MatriceLigne(->Tableau2D; Sélecteur; Ligne1; Coefficient; Ligne2)
   ` Tableau2D (Pointeur) Tableau réel 2D
   ` Sélecteur (Entier) 1->Multiplier, 2->Permuter, 3->Ajouter
   ` ou constantes : Matrice_Multiplier, Matrice_Permuter, Matrice_Ajouter
   ` Ligne1 (Entier) Ligne de travail
   ` Coefficient (Réel) Coefficient multiplicateur
   ` Ligne2 (Entier) Ligne secondaire
   ` ----------------------------------
   ` MATHERROR
   ` 0 -> Pas d'erreur
   ` -1 -> Le sélecteur est hors définition
   ` -2 -> Une ligne est hors tableau
   ` -3 -> Ligne1 et Ligne2 n'ont pas le même nombre d'éléments (impossible)
   ` ----------------------------------
   ` ATTENTION :
   ` Multiplier, si Ligne2 non nul, elle est ajoutée après la multiplication
   ` Permuter, Coeff est appliqué à Ligne1 après la permutation
   ` Le tableau passé en premier paramètre est modifié
   ` ----------------------------------
   ` 
Fin de si 

C_ENTIER LONG(MATHERROR)
C_POINTEUR($1)
C_ENTIER LONG($2;$3;$5)
C_REEL($4)

Au cas ou 
 : (($2<0) & ($2>3))
 MATHERROR:=-1
 : (($3>Taille tableau($1->)) | ($5>Taille tableau($1->)))
 MATHERROR:=-2
 : (($5#0) & (Taille tableau($1->{$3})#Taille tableau($1->{$5})))
 MATHERROR:=-3
Sinon 
 MATHERROR:=0
Fin de cas 

Si (MATHERROR=0)
 C_ENTIER LONG($i)
 C_REEL($k)
 
 Au cas ou 
  : ($2=1)  ` Multiplier, si Ligne2 non nul, elle est ajoutée après la multiplication
  Boucle ($i;1;Taille tableau($1->{$3}))  ` chaque élément de la ligne $3
   $1->{$3}{$i}:=($1->{$3}{$i})*$4
   Si ($5#0)
    $1->{$3}{$i}:=$1->{$3}{$i}+($1->{$5}{$i})
   Fin de si 
  Fin de boucle 
  
  : ($2=2)  ` Permuter, Coeff est appliqué à Ligne1 après la permutation
  Boucle ($i;1;Taille tableau($1->{$3}))  ` chaque élément de la ligne $2
   $k:=$1->{$3}{$i}
   $1->{$3}{$i}:=$1->{$5}{$i}
   $1->{$5}{$i}:=$k*$4
  Fin de boucle 
  
  : ($2=3)  ` Ajouter, Coeff est appliqué à Ligne2 puis Ligne2 est ajoutée à Ligne1
  Boucle ($i;1;Taille tableau($1->{$3}))  ` chaque élément de la ligne $2
   $1->{$3}{$i}:=($1->{$3}{$i})+(($1->{$5}{$i})*$4)
  Fin de boucle 
 Fin de cas 
 
Fin de si