Page 1 sur 1

Procédure à paramètres multiples

Publié : dim. 01/sept./2013 14:33
par Micoute
Bonjour à tous, j'aimerais savoir s'il est possible de créer une procédure en ne connaissant pas le nombre de paramètres qui lui seront passés, je pense à mettre dedans une liste structurée ou un tableau, par exemple pour calculer la moyenne de tous les paramètres entrés.

Je vous remercie tous beaucoup par anticipation.

Re: Procédure à paramètres multiples

Publié : dim. 01/sept./2013 14:56
par falsam
Le tableau ou la structure me parait plus judicieux.

Code : Tout sélectionner

Procedure.f Getaverage(Array score.f(1), Size.i)
  Protected Total.i, i.i
  
  For i = 0 To Size
    Total+ Score(i)  
  Next
  
  ProcedureReturn Total/size
EndProcedure
  
Dim Score.f(5)
Score(0) = 5.50
Score(1) = 10
Score(2) = 6

Debug GetAverage(Score(), 3)

Re: Procédure à paramètres multiples

Publié : dim. 01/sept./2013 15:01
par falsam
Si tu tiens vraiment à créer une procédure à paramètres multiples, tu as le code de ts-soft.
http://www.purebasic.fr/english/viewtop ... 13#p376680

Re: Procédure à paramètres multiples

Publié : dim. 01/sept./2013 16:05
par Micoute
Bonjour et merci énormément falsam, je ne m'attendais pas à avoir des réponses aussi rapidement, mais juste une idée si on pouvait entrer un nombre de paramètres qu'on ne peut pas déterminer à l'avance et je m'aperçois qu'on peut tout faire avec PB.

Re: Procédure à paramètres multiples

Publié : dim. 01/sept./2013 16:58
par Micoute
Finalement, j'ai procédé comme ça

Code : Tout sélectionner

Procedure.f Moyenne(List Liste.f())
  Protected Total.i
  
  ForEach Liste()
    Total + Liste()
  Next
  
  ProcedureReturn Total/ListSize(Liste())
EndProcedure


Global NewList MaListe.f()
AddElement(MaListe())
MaListe() = 5.50
AddElement(MaListe())
MaListe() = 10
AddElement(MaListe())
MaListe() = 6

Debug StrF(Moyenne(MaListe()),3)
je trouve ça parfait, merci encore falsam.

Re: Procédure à paramètres multiples

Publié : dim. 01/sept./2013 19:11
par Backup
falsam a écrit :Le tableau ou la structure me parait plus judicieux.

Code : Tout sélectionner

Procedure.f Getaverage(Array score.f(1), Size.i)
 [/quote]

ou peut etre la liste chainée .. si on ne connais pas a l'avance le nombre de paramètres
la lecture d'une liste pour récupérer ces paramètres c'est une possibilités :)

Re: Procédure à paramètres multiples

Publié : dim. 01/sept./2013 19:28
par Micoute
Merci Dobro.