MATH_Conversion [Utilitaires]
Par Teddy Linet (Math4D v2)
Nouvelle recherche
Si (Faux)
` MATH_Conversion [ Teddy LINET 02/03]
`-------------------------------------------------
` ATTENTION : nécessite MATH_Unites
`-------------------------------------------------
` RAPPELS MATHEMATIQUES :
` Conversion des unités
`-------------------------------------------------
` MATH_Conversion ($vValeur_F;$vUniteDepart_T;$vUniteArrivée_T)-->Réel
` $vValeur_F (Reel) valeur à convertir
` $vUniteDepart_T (Reel) Unité de la valeur à convertir
` $vUniteArrivée_T (Reel) Unité souhaitée
` ---------------------------------------------
` MATHERROR
` 0 : Pas d'erreur
` -1 : Unités incompatibles
` -2 : Une unitée est inconnue
Fin de si
C_REEL($1;$vValeur_F;$vValeurUnité_F;$vValeurZero_F)
C_TEXTE($2;$vUniteDepart_T;$3;$vUniteArrivée_T)
C_TEXTE($4;$vUniteReferenceDepart_T;$vUniteEtudiee_T;$vUniteReference_T)
C_ENTIER LONG(MATHERROR)
$vValeur_F:=$1
$vUniteDepart_T:=$2
$vUniteArrivée_T:=$3
$vValeurUnité_F:=0
$vValeurZero_F:=0
Si (($vUniteDepart_T#"UI") | ($vUniteArrivée_T#"UI")) ` Si UI et UI => on ne fait rien
Au cas ou
: ($vUniteDepart_T="UI")
$vUniteDepart_T:=MATH_Unites (10;$vUniteArrivée_T) ` constante Unite_NomUI
: ($vUniteArrivée_T="UI")
$vUniteArrivée_T:=MATH_Unites (10;$vUniteDepart_T) ` constante Unite_NomUI
Fin de cas
Si (Nombre de parametres>3) ` Methode récursive
$vUniteReferenceDepart_T:=$4
$vUniteEtudiee_T:=$vUniteArrivée_T
Sinon ` Premier appel => MATHERROR à 0
$vUniteReferenceDepart_T:=""
$vUniteEtudiee_T:=$vUniteDepart_T
MATHERROR:=0
Fin de si
$vValeurUnité_F:=Num(MATH_Unites (4;$vUniteEtudiee_T)) ` Valeur conversion
$vUniteReference_T:=MATH_Unites (3;$vUniteEtudiee_T) ` Unité référence
$vValeurZero_F:=Num(MATH_Unites (5;$vUniteEtudiee_T)) ` Valeur zéro
Si (MATHERROR>=0)
Si ($vUniteReferenceDepart_T="") ` Premier appel
$vValeur_F:=$vValeurZero_F+($vValeur_F*$vValeurUnité_F) ` On transforme en valeur internatio
$vValeur_F:=MATH_Conversion ($vValeur_F;$vUniteDepart_T;$vUniteArrivée_T;$vUniteReference_T)
Sinon ` Deuxième appel (recursif)
Si ($vUniteReferenceDepart_T=$vUniteReference_T) ` Caramba, pas les mêmes unités
$vValeur_F:=($vValeur_F-$vValeurZero_F)/$vValeurUnité_F ` On transforme dans l'unité
Sinon ` Pas la même unité de référence => MATHERROR
MATHERROR:=-1
$vValeur_F:=0
Fin de si
Fin de si
Sinon
$vValeur_F:=0
Fin de si
Fin de si
$0:=$vValeur_F