* @MOD PROCEDUR MAUGIS 07/03/27 21:15:19 5671 * Petite procédure donnant n modulo m * * Types possibles : entiers, flottants, listreel, listenti * * si on donne deux scalaires, si l'un des deux est flottant, on * convertit l'autre en flottant. * idem pour des listes. * * indicateur comme quoi on n'a que des entiers en entrée lent = faux ; lent = vrai ; 'FINSI' ; 'FINSI' ; * on convertit tout en flottants i = i * 1. ; j = j * 1. ; * indicateur comme quoi on veut un scalaire en sortie lscal = faux ; * on convertit tout en liste lscal = vrai ; n = 1 ; 'SINON' ; 'FINSI' ; 'SINON' ; 'SINON' ; 'ERREUR' 'Les deux listes ne sont pas de la même longueur' ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SI' (('MINIMUM' J) '<EG' 0) ; 'ERREUR' 'le modulo doit être strictement positif' ; 'FINSI' ; ratio = I / J ; * correction nécessaire due à la différence entre l'opérateur ENTI et la * partie entière d'un réel, pour les valeurs négatives, sauf pour les * valeurs entières négatives (qui sont correctes). ineg = 'MASQUE' ratio 'INFERIEUR' 0. ; ieg = 'MASQUE' ratio 'EGALE' (('ENTIER' ratio)*1.) ; rati2 = (('ENTIER' ratio)*1.) + ((ieg - li1) * ineg) ; MOD = I - ( rati2 * J ) ; 'SI' lent ; * conversion en listenti (pas de pb car le résultat est positif) mod2 = mod ; MOD = 'ENTIER' mod2 ; 'DETRUIT' mod2 ; 'FINSI' ; 'SI' lscal ; * conversion en scalaire mod2 = MOD ; MOD = 'MINIMUM' mod2 ; 'DETRUIT' mod2 ; 'FINSI' ; * Ménage 'DETRUIT' li1 ; 'DETRUIT' ineg ; 'DETRUIT' ieg ; 'DETRUIT' ratio ; 'DETRUIT' rati2 ; 'FINPROC' MOD ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales