Fonction MAX et MIN

Messages postés
191
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 octobre 2008
- - Dernière réponse : Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
- 17 oct. 2004 à 13:40
salut

jai une serie de chiffre qui se presente comme cela
:
data(1) = 1568
data(é) = 145
data(3) = 1236

je voudrais savoir si il existait une fonction qui me permette dafficher le chiffre MAX et MIN a partir de cette série ?
Afficher la suite 

12 réponses

Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
0
Merci
non il fo mouliner:
max=0
for i=1 to ubound(data)
if data(i)>max then max=data(i)
next i
msgbox max

voila
A+
juva

BTS IG, développeurs, et tout le monde ! venez faire un tour sur http://www.webhelp-ig.com
Retrouvez une équipe de développeurs confirmés sur le tchate:
serveur : bastia.zefunChat.net
port : 6667
chan : #programmation
Messages postés
191
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 octobre 2008
0
Merci
et pour MIN ?
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
45
0
Merci
Salut, ben pour min tu fais presque la meme chose mais apres avoir trouve le MAX
max=0
for i=1 to ubound(data)
if data(i)>max then max=data(i)
next i
msgbox max

Min=Max
for i=1 to ubound(data)
if data(i)<min then min=data(i)
next i
msgbox min


Je pense que ca devrait marcher
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
Messages postés
191
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 octobre 2008
0
Merci
Merci beaucoup les gars :)
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
Je suis pas d'accord !!!!

<s>max=0</s>
max=data(1)
for i=2 to ubound(data)
if data(i)>max then max=data(i)
next i
msgbox max

et le min :

<s>Min=Max</s>
min=data(1)
for i=2 to ubound(data)
if data(i)<min then min=data(i)
next i
msgbox min

soit sous forme de fonction :

Public Sub MinMax(ByRef Min, ByRef Max, Values() As Long)
Max = Values(LBound(Values))
Min = Values(LBound(Values))

Dim i As Integer
For i = LBound(Values) + 1 To UBound(Values)
If Max < Values(i) Then Max = Values(i)
If Min > Values(i) Then Min = Values(i)
Next i
End Sub

Private Sub Form_Load()
Dim Values(4) As Long

Values(0) = 5
Values(1) = 7
Values(2) = 3
Values(3) = 8
Values(4) = 2

Dim Min As Long
Dim Max As Long

MinMax Min, Max, Values

MsgBox "MIN : " & Min & vbNewLine & "MAX : " & Max
End Sub


Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
31 mars 2015
17
0
Merci
Pour éviter de faire 2 boucles, il faut donner à min au départ une valeur la plus grande possible, de même max doit être initialisé à la valeur la plus petite.

max=-32768
min=32767

for i=1 to ubound(data)
if data(i)>max then max=data(i)
if data(i)<min then min=data(i)
next i

msgbox max & " " & min
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
45
0
Merci
-> Renfield:
Bien Vu, effectivement on prenait pas en compte les negatifs...
Quelle erreur ;)
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
Je n'ai pas compris ton commentaire, Gobilot...

pourquoi attribuer 32768, ce qui oblige a changer ces valeurs selon le type de donnée considéré....

en faisant max=Values(1)

et en commencant la boucle en regardant la seconde valeur, tu ne fais pas de boucle inutile... et tu fais même moins de comparaison...

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
31 mars 2015
17
0
Merci
>>Renfield

En effet j'ai pris Integer en exemple ce qui oblige à changer de valeur en fonction du type.
Je reconnais ta méthode est mieux, en prenant une valeur existante, pourquoi pas la première, ce qui permet de commencer la boucle à la deuxième position.
mais quand j'ai posté mon post, j'ai du te croiser et j'avais pas vu ta méthode.

Mea Culpa :)
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
ok ok

"pourquoi pas la première, ce qui permet de commencer la boucle à la deuxième position."

euh..... c'est bien ce que je fait....

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
31 mars 2015
17
0
Merci
On va pas chicaner, la dernière valeur convient aussi, une valeur intermédiaire serait moins pratique.

Max = Values(UBound(Values))
Min = Values(UBound(Values))

Dim i As Integer
For i = LBound(Values) To UBound(Values)-1
If Max < Values(i) Then Max = Values(i)
If Min > Values(i) Then Min = Values(i)
Next i
End Sub
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
oui, tant qu'on ne donne pas de valeur arbitraire, c'est ce qui compte....

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS