Page 1 sur 1
Bug ou erreur de syntaxe de ma part ?
Publié : dim. 07/août/2016 19:41
par Philippe_GEORGES
Bonjour
Co code fonctionnait avec la dernière version LTS de Purebasic, mais plus avec la version 5.50
Code : Tout sélectionner
Procedure.i Dvd(x.i,y.i)
If (y = 0) ; division par 0 ??
ProcedureReturn x
EndIf
z.i = x / y
If (((x>=0 ) = (y>=0)) Or (x-z*y = 0)) ; cette ligne ne passe pas !
ProcedureReturn z
Else
ProcedureReturn z -1
EndIf
EndProcedure
Quelqu'un a t il une idée ?
Merci d'avance,
Phil
Re: Bug ou erreur de syntaxe de ma part ?
Publié : dim. 07/août/2016 21:24
par GallyHC
Bonjour,
Je penses que cela vient juste du "=" entre deux testes. D'ailleur je ne comprend pas que cela passe en 5.42 LST (surement une chose que je comprendrais surement pas).
Mais :
Code : Tout sélectionner
If (((x>=0 ) And (y>=0)) Or (x-z*y = 0)) ; cette ligne ne passe pas !
Passe pour toute version
Cordialement,
GallyHC
Re: Bug ou erreur de syntaxe de ma part ?
Publié : dim. 07/août/2016 21:29
par Shadow
Moi ça marche 5.42 LTS 64.
Mais je ne connaissais pas cette façon de codé ^^
Re: Bug ou erreur de syntaxe de ma part ?
Publié : dim. 07/août/2016 21:44
par GallyHC
Bonsoir,
Une personne bien sympathique du T'chat de "Falsam" m'a donné cette solution, que je trouve viable :
Code : Tout sélectionner
Procedure.i Dvd(x.i,y.i)
If (y = 0) ; division par 0 ??
ProcedureReturn x
EndIf
z.i = x / y
If ((Bool(x=>0 ) = Bool(y=>0)) Or (x-z*y = 0))
ProcedureReturn z
Else
ProcedureReturn z -1
EndIf
EndProcedure
Encore merci a cette personne,
Cordialement,
GallyHC
Re: Bug ou erreur de syntaxe de ma part ?
Publié : dim. 07/août/2016 21:48
par Zorro
lorsqu'on retire toutes les parentheses on se retrouve avec ça :
on comprends : If x>=0
mais apres il n'y a pas de raisons que ça fonctionne !
que faut t'il comprendre la dedans ?
il y a deux conditions !
une qui est :
et une autre qui aurai du etre :
alors soit tu les mets l'une apres l'autre :
soit tu separes par un and
deux IF imbriqués peuvent souvent etre remplacé par un And
en remettant les parentheses (mais pas trop hein

) :
Re: Bug ou erreur de syntaxe de ma part ?
Publié : dim. 07/août/2016 22:15
par Philippe_GEORGES
GallyHC a écrit :Bonsoir,
Une personne bien sympathique du T'chat de "Falsam" m'a donné cette solution, que je trouve viable :
Code : Tout sélectionner
Procedure.i Dvd(x.i,y.i)
If (y = 0) ; division par 0 ??
ProcedureReturn x
EndIf
z.i = x / y
If ((Bool(x=>0 ) = Bool(y=>0)) Or (x-z*y = 0))
ProcedureReturn z
Else
ProcedureReturn z -1
EndIf
EndProcedure
Encore merci a cette personne,
Cordialement,
GallyHC
Merci à toi, là ça marche super bien !
Mais j'ai du mal à voir où était vraiment le problème.
Phil
Re: Bug ou erreur de syntaxe de ma part ?
Publié : lun. 08/août/2016 0:31
par Ar-S
Je suis surpris que
ait marché en 5.42 !
Re: Bug ou erreur de syntaxe de ma part ?
Publié : lun. 08/août/2016 4:47
par Shadow
Bha oui c'est ce que je te dis aussi !
Mais je pense que c'est normale car les opération sont
entre parenthèses et ça reviens donc à faire ceci:
Re: Bug ou erreur de syntaxe de ma part ?
Publié : lun. 08/août/2016 8:41
par Zorro
Ar-S a écrit :Je suis surpris que ....
ait marché en 5.42 !
si si, je viens d'essayer, je sais pas si ça marche, mais ça ne déclenchait pas d'erreur ...
