Re: Lisseur de nombres
Publié : mer. 14/juin/2017 15:35
Qué ???Shadow a écrit :Si ta un lien parce que je trouve pas se que tu m'as mis là.
Qué ???Shadow a écrit :Si ta un lien parce que je trouve pas se que tu m'as mis là.
TazNormand a écrit :@Djes : N'étant pas matheux, je ne m'aventurerai pas sur le terrain des DCT ni des FFT, je te laisse le soin d'expliquer tout ça à Shadow
Code : Tout sélectionner
; Code créer par Mr Dieppedalle David le 21/06/2017.
Procedure.s LisseNombres(List ListeNombres.i())
ForEach ListeNombres.i()
Totale.i + ListeNombres.i()
Next
Moyenne.i = Round(Totale.i / ListSize(ListeNombres.i()), #PB_Round_Nearest)
ForEach ListeNombres.i()
ListeNombres.i() = Moyenne.i
Next
EndProcedure
Procedure ListeAjouteNombre(List ListeNombres.i(), Nombre.i, EcartMaximal.i = 4)
If ListSize(ListeNombres.i()) = 0
AddElement(ListeNombres.i())
ListeNombres.i() = Nombre.i
ProcedureReturn 1
EndIf
FirstElement(ListeNombres.i())
If ListeNombres.i() - Nombre.i <= EcartMaximal.i And ListeNombres.i() - Nombre.i >= -EcartMaximal.i
LastElement(ListeNombres.i())
AddElement(ListeNombres.i())
ListeNombres.i() = Nombre.i
ProcedureReturn 1
EndIf
EndProcedure
; 4 = "100.104.96.100.102.97.100.95.101.98.103.94.100.99.102.92.110.101.98.103.94.100.98.103.94.100" -> "100.100.100.100.100.100.100.95.101.101.101.94.100.100.100.92.110.101.101.101.94.100.100.100.94.100"
; 2 = "100.104.96.100.102.97.100.95.101.98.103.94.100.99.102.92.110.101.98.103.94.100.98.103.94.100" -> "100.104.96.101.101.97.100.95.101.98.103.94.100.100.100.92.110.101.98.103.94.99.99.103.94.100"
; 2 = "5.3.4.7.6.4.5.3.7.6.8.2.5.7.6.4.5.3.1.2.3.1.2.4.6.5.4.6.5.8.4.2.6.9.7.8.9.7.8.9.6.4.5.6.7.4.5.6.7" -> "5.5.5.5.5.5.5.5.5.5.8.2.5.5.5.5.5.5.2.2.2.2.2.5.5.5.5.5.5.8.4.4.4.8.8.8.8.8.8.8.6.6.6.6.6.6.6.6.6"
ListeNombres.s = "100.104.96.100.102.97.100.95.101.98.103.94.100.99.102.92.110.101.98.103.94.100.98.103.94.100"
NewList ListeNombresOriginale.i()
NewList ListeNombresLisser.i()
For I = 1 To CountString(ListeNombres.s, ".") + 1
If Not ListeAjouteNombre(ListeNombresOriginale.i(), Val(StringField(ListeNombres.s, I, ".")), 2)
LisseNombres(ListeNombresOriginale.i())
ForEach ListeNombresOriginale.i()
AddElement(ListeNombresLisser.i())
ListeNombresLisser.i() = ListeNombresOriginale.i()
Next
ClearList(ListeNombresOriginale.i())
I - 1
Continue
EndIf
Next
If ListSize(ListeNombresOriginale.i()) > 0
LisseNombres(ListeNombresOriginale.i())
ForEach ListeNombresOriginale.i()
AddElement(ListeNombresLisser.i())
ListeNombresLisser.i() = ListeNombresOriginale.i()
Next
EndIf
ForEach ListeNombresLisser.i()
ListeSortie.s + ListeNombresLisser.i() + "."
Next
Debug ListeNombres.s
Debug ListeSortie.s