Fonction MAX et MIN

Signaler
Messages postés
191
Date d'inscription
mercredi 21 juillet 2004
Statut
Membre
Dernière intervention
27 octobre 2008
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
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 ?

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
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

et pour MIN ?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
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

Merci beaucoup les gars :)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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
11 mars 2019
25
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
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
48
-> 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
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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
11 mars 2019
25
>>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
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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
11 mars 2019
25
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
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
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