ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Fonction Escalier   



L'auteur

Robert Plagnard
France France
Membre Simple
# 0000000031
enregistré le 15/10/2004

http://www.ingelog.fr
PLAGNARD Robert
75015 PARIS
de la société IngéLog
Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation > Maths - Matrices - Algos

Fonction Escalier
# 0000000115
ajouté le 02/12/2004 19:50:22 et modifié le 30/03/2005
consulté 10490 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0
VFP 5.0
VFP 3.0

Description

La fonction Escalier est assez générale. Elle donne y = E(x) où E est une courbe en escalier. Elle est pratique d'utilisation. Elle utilise le fait que FoxPro permet de ne pas passer tous les arguments à une fonction. Je l'ai utilisé de manière intensive dans une application de calcul de remise commerciale.

Le premier paramètre de la fonction est x, les paramètres suivants définissent la courbe E. Les paliers de E sont définis aux points xi où E( xi ) = yi , par ailleurs avant x1 la fonction a pour valeur y0. Les paramètres de la fonction sont donc ( x, y0, x1, y1, x2, y2, ..., xn, yn ). Il doit donc y avoir un nombre pair d'arguments. Dans la pratique on se limite à 20 (9 paliers). Il faut bien sur que la suite des xi soit croissante.

Code source :
? Escalier( 124 ,;
            2.5 ,;
      100, 14.0 ,;
      200, 17.0 ,;
      400, 21.0 ,;
      600, 24.0 ,;
      800, 28.0 )
? Escalier( 856 ,;
                2.5 ,;
          100,  9.0 ,;
          200, 10.0 ,;
          400, 12.0 ,;
          600, 15.0 )
? Escalier(  89 ,;
                2.5 ,;
          100,  9.0 ,;
          200, 12.0 )

*/-----------------------------------------------------------------------------
function Escalier
*/-----------------------------------------------------------------------------
lparam ;
   tnX , tnY0 ,; && si tnX < tnX1 Escalier rend tnY0
   tnX1, tnY1, ; && à partir de tnX1 Escalier rend tnY1
   tnX2, tnY2, ; && à partir de tnX2 Escalier rend tnY2
   tnX3, tnY3, ; && ... et ainsi de suite
   tnX4, tnY4, ; && Il faut que tnX1 < tnX2 < .. < tnX9
   tnX5, tnY5, ; && on n'est pas obliger de mettre tous les paramètres
   tnX6, tnY6, ; && Il faut quand même q'il y en ait un nombre paire
   tnX7, tnY7, ; && et pas plus de 20
   tnX8, tnY8, ;
   tnX9, tnY9

   if mod( param(), 2 ) = 1 or not between( param(), 2, 20 )
      Error  "Escalier: mauvais paramètres"
   endif

   return ;
      iifempty( m.tnX1 ) or m.tnX < m.tnX1, m.tnY0,;
      iifempty( m.tnX2 ) or m.tnX < m.tnX2, m.tnY1,;
      iifempty( m.tnX3 ) or m.tnX < m.tnX3, m.tnY2,;
      iifempty( m.tnX4 ) or m.tnX < m.tnX4, m.tnY3,;
      iifempty( m.tnX5 ) or m.tnX < m.tnX5, m.tnY4,;
      iifempty( m.tnX6 ) or m.tnX < m.tnX6, m.tnY5,;
      iifempty( m.tnX7 ) or m.tnX < m.tnX7, m.tnY6,;
      iifempty( m.tnX8 ) or m.tnX < m.tnX8, m.tnY7,;
      iifempty( m.tnX9 ) or m.tnX < m.tnX9, m.tnY8,;
                                              m.tnY9 )))))))))
endfunc

Commentaires
Aucun commentaire enregistré ...

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3