Minimax d'une liste de nombres minimum maximum

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 759 fois - Téléchargée 29 fois

Contenu du snippet

Cette fonction retourne le minimum ou le Maximum d'une liste d'éléments
Modification le 17 février 2004
J'ai ajouté 6 lignes de vérification pour être sûr que tous les éléments d'un tableau ne soit pas vide. Autrrement il y a un inconvénient de taille la variable VarTmp retourne du vide.

Source / Exemple :


Public Function MiniMax(choix As Variant, tdd(), debut, fin)
'Cette fonction retourne le minimum ou le Maximum d'une liste d'éléments

Dim boucle As Long, VarTmp As Variant, ODC As Integer, Terminus As Integer
'is
If Not IsNumeric(choix) Then
choix = UCase(choix)
If choix = "MAX" Or choix = ">" Then ODC = 1 Else ODC = -1
ElseIf IsNumeric(choix) Then
If choix = 0 Then ODC = 1 Else ODC = -1
End If
'Vérifie si le tableau posséde un élément vide de données
Terminus = fin
For boucle = debut To fin
If IsEmpty(tdd(boucle)) = True Then
Terminus = boucle - 1
Exit For

End If
Next

VarTmp = tdd(1)
' Parcours de l'ensemble des arguments
For boucle = 2 To Terminus
            ' 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

Conclusion :


Cette fonction a été testée sans erreur

Vous pouvez mettre dans la variable choix soit un caractére alphanumérique soit un nombre, le caractére alphanumérique est le signe > ou < ou MAX ou MIN selon sa propre façon de travailler, j'ai donc penser à tous ceux qui sont comme moi un tantinet changeant dans leur méthode d'appel de procédure.

Salut !

Rectification il y avait un BUG et de taille toutes mes excuses. Bye
Rectification il y avait plusieurs BUGS re désolé !

A voir également

Ajouter un commentaire

Commentaires

codea
Messages postés
94
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
6 août 2006
-
** 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
-
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
-
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.