MINIMAX D'UNE LISTE DE NOMBRES MINIMUM MAXIMUM

JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008 - 4 janv. 2004 à 20:52
codea Messages postés 94 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 6 août 2006 - 15 oct. 2005 à 21:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/19254-minimax-d-une-liste-de-nombres-minimum-maximum

codea Messages postés 94 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 6 août 2006
15 oct. 2005 à 21:59
** Petite erreur :
La fonction doit etre publique dans la classe...
public function MiniMax(Choix As eMaxMin, tdd() As Variant, debut As Integer, fin As Integer)

Et pour utiliser la classe a partir d'une form ou d'un module :
dim MyMatVar as cMath
Math.MiniMax(e_Max,MonTableau,0,ubound(Montableau))
codea Messages postés 94 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 6 août 2006
15 oct. 2005 à 21:56
Pour le choix Min ou Max ... Je suggère d'utiliser un type Enum, de cette façon pas besoin de retourner voir dans la fonction pour savoir quel paramètre lui passer quand ca fais longtemps qu'on a pas utilisé cette fonction... une idée... et dans une classe...
Dans un module de classe cMath:

Public Enum eMaxMin
e_Max = 0
e_Min = 1
End Enum

Private Function MiniMax(Choix As eMaxMin, tdd() As Variant, debut As Integer, fin As Integer)
'Cette fonction retourne le minimum ou le Maximum d'une liste d'éléments
'select case
Dim boucle As Long, VarTmp As Variant, ODC As Integer

Select Case Choix
Case e_Max
ODC = 1
Case Else
ODC = -1
End Select
VarTmp = tdd(debut) ' Initialisation de la valeur max

' Parcours de l'ensemble des arguments
For boucle = debut To fin
' Comparaison de l'élément courant avec le MiniMax
If ((VarTmp * ODC) < (tdd(boucle) * ODC)) Then VarTmp = tdd(boucle)
Next boucle
' Retourne l'élément le plus grand ou le plus petit
MiniMax = VarTmp
End Function
JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008
4 janv. 2004 à 20:52
Private Function MiniMax(choix As Variant, tdd() As Variant, debut As Integer, fin As Integer)
'Cette fonction retourne le minimum ou le Maximum d'une liste d'éléments
'select case
Dim boucle As Long, VarTmp As Variant, ODC As Integer

Select Case UCase(choix)
Case "MAX", 0, ">"
ODC = 1
Case Else
ODC = -1
End Select
VarTmp = tdd(debut) ' Initialisation de la valeur max

' Parcours de l'ensemble des arguments
For boucle = debut To fin
' Comparaison de l'élément courant avec le MiniMax
If ((VarTmp * ODC) < (tdd(boucle) * ODC)) Then VarTmp = tdd(boucle)
Next boucle
' Retourne l'élément le plus grand ou le plus petit
MiniMax = VarTmp
End Function
Rejoignez-nous