beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 2017
-
24 mai 2009 à 16:15
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
24 mai 2009 à 18:17
Bonjour tout le monde,
J'ai ce code qui cherche le maximum dans un tableau :
Public Function RechercheMax(ByVal Tableau)
Dim i_maximal, i As Integer
i_maximal = 0
For i = 1 To NE
If Tableau(i) >= 0 Then
If (i_maximal = 0) Or (Tableau(i) > Tableau(i_maximal)) Then
i_maximal = i
End If
End If
If i_maximal > 0 Then
MsgBox "le maximum est " + Tableau(i_maximal)
Else
MsgBox "Problème dans le max"
End If
Next i
End Function
Arrivé ici :
If (i_maximal = 0) Or (Tableau(i) > Tableau(i_maximal)) Then
Je pensais qu'après avoir vérifié le premier OR, il sortirait du if mais ce n'est pas le cas.
If (i_maximal 0)> VRAI
mais il ne sort pas du if, est-ce normal ?
Merci d'avance pour l'aide.
Voici l'algo de départ :
'* Recherche d'une valeur maximale (tableau à une dimension)
' i_maximal = 0;
' POUR i ALLANT DE 1 A nombre_elements
' SI Tableau[i] respecte un critère ALORS
' SI (i_maximal == 0) OU (Tableau[i] > Tableau[i_maximal]) ALORS
' i_maximal = i;
' FIN SI;
' FIN SI
' FIN POUR i
' SI i_maximal > 0 ALORS
' exploitation de l'élément trouvé à l'indice i_maximal;
' SINON
' gestion du "pas trouvé";
' FIN SI
beegees
A voir également:
Le premier OR est évalué mais rentre dans le second OR alors qu'il ne devrait pa
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 24 mai 2009 à 16:49
Qu'entends-tu par sortir du If exactement ?????
Parce que si If (i_maximal 0) est vrai il va aller executer les instructions dans le if, c'est à dire ici i_maximal i
Les instructions dans la if ne seront pas executer que si le resultat du test fait par le if est Faux
Donc la première fois, si i_maximal =0, il est normal qu'il rentre dans le If. Les fois suivantes, normalement i_maximal sera différent de 0, donc il ne rentrera dans le if que si Tableau(i) > Tableau(i_maximal)
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 24 mai 2009 à 16:58
Bonjour,
Si c'est bien cela que tu cherche à faire, essaye ce code:
Dim maxId As Integer = 0
For i = 0 To UBound(Tableau)
If Tableau(i) > Tableau(maxId) Then
maxId = i
End If
Next
Il part du principe que le premmier élément du tableau est le plus grand, puis il le compare au reste, il un autre élément est plus grand, alors il passe en tête et devient l'élément maximal du tableau.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 24 mai 2009 à 18:07
ça peut fonctionner sans renvoyer quelque chose
le but d'une fonction est de renvoyer qqchose, sinon utilise une procédure
sans type çà renvoie un variant qui se type selon ce qu'il a, ici un integer (cf :
RechercheMax = iValue
)
donc dans ce cas précis le résultat est le même, mais il vaut mieux se forcer à tout typer proprement, tant pour l'habitude, que pour d'autres langages, que pour les performances
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 24 mai 2009 à 18:14
Une question, comment arrive tu as commencer un tableau à l'index 1 ????
Tu peux ne commencer à le remplir qu'à l'index 1, mais l' élément 0 existera toujours bien que sa valeur soit 0 pour un tableau d'Interger ou vide (Nothing) pour un tableau non typé.