Bug ou erreur de syntaxe de ma part ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 140
Inscription : mer. 28/janv./2009 13:28

Bug ou erreur de syntaxe de ma part ?

Message 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
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Bug ou erreur de syntaxe de ma part ?

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Bug ou erreur de syntaxe de ma part ?

Message par Shadow »

Moi ça marche 5.42 LTS 64.
Mais je ne connaissais pas cette façon de codé ^^
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Bug ou erreur de syntaxe de ma part ?

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Bug ou erreur de syntaxe de ma part ?

Message par Zorro »

lorsqu'on retire toutes les parentheses on se retrouve avec ça :

Code : Tout sélectionner

If  x>=0 = y>=0  Or      x-z*y = 0
on comprends : If x>=0
mais apres il n'y a pas de raisons que ça fonctionne !

que faut t'il comprendre la dedans ?

Code : Tout sélectionner

If  x>=0  =  y>=0 
il y a deux conditions !
une qui est :

Code : Tout sélectionner

If  x>=0 
et une autre qui aurai du etre :

Code : Tout sélectionner

If  y>=0 
alors soit tu les mets l'une apres l'autre :

Code : Tout sélectionner

If  x>=0
If y>=0 
.....
soit tu separes par un and
deux IF imbriqués peuvent souvent etre remplacé par un And :)

Code : Tout sélectionner

If  x>=0 and  y>=0  Or      x-z*y = 0 ; cette ligne passe 
en remettant les parentheses (mais pas trop hein :mrgreen: ) :

Code : Tout sélectionner

	If ( x>=0 and  y>=0) Or (  x-z*y = 0 ) ; cette ligne passe 
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 140
Inscription : mer. 28/janv./2009 13:28

Re: Bug ou erreur de syntaxe de ma part ?

Message 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
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Bug ou erreur de syntaxe de ma part ?

Message par Ar-S »

Je suis surpris que

Code : Tout sélectionner

If (((x>=0 ) = (y>=0)) Or (x-z*y = 0)) 
ait marché en 5.42 !
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Bug ou erreur de syntaxe de ma part ?

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

Code : Tout sélectionner

If ((Bool(x>=0 ) = Bool(y>=0)) Or Bool(x-z*y = 0))
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Bug ou erreur de syntaxe de ma part ?

Message 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 ... :)
Répondre