Page 1 sur 2
Retourner l'inverse d'une variable [Résolu]
Publié : mar. 19/juil./2011 18:12
par Kwai chang caine
Bonjour à tous
Ca doit etre tellement simple que je ne trouve pas

Remarquez apres 10 h de prog
Comment retourner l'inverse d'une variable, la fonction NOT ne marche pas avec procedure return
Merci et bonne soirée
Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 18:22
par Backup
................
Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 18:57
par Kwai chang caine
Bonjour DOBRO
Bah en fait, comme je l'ai ecrit je veux juste retourner un NOT d'un booleen
Je me suis peut etre mal exprimé, pas la valeur negative, mais le contraire, le complement...enfin je ne sais pas comment ça s'appelle en bon "françois"
Enfin un NOT quoi
Si la variable est #True, je veux un retour #False et inversement
Mais la fonction NOT ne marche pas avec ProceduReturn
Je pourrais faire :
Code : Tout sélectionner
Procedure Try()
a=#True
If a
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Debug Try()
Mais j'y trouve un peu lourdeau, il doit y avoir plus simple pour juste un NOT

Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 19:03
par Thyphoon
comma ça si
a=1 alors 1-1 la procedure retourne 0
a=0 alors 1-0 la procedure retourne 1
voilà

Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 19:08
par case
Procedure test(a)
ProcedureReturn (Not a)
EndProcedure
Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 20:13
par Chris
Si mes souvenirs sont bons, un nombre est l'inverse d'un autre quand le produit des deux donne 1
Exemple: (avec Calc, touche 1/x)
L'inverse de 2 = 0.5
L'inverse de 3 = 0.3333333
L'inverse de 4 = 0.25
L'inverse de 5 = 0.2
etc....
Bref, il suffit de faire 1/le nombre (ou la variable qui lui correspond)
Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 21:38
par SPH
Ca, ca devrait marcher mais ca ne fonctionne pas. Normal, je ne fais jamais de procedures
Code : Tout sélectionner
Procedure Try(a)
inverse.f=1/a
ProcedureReturn inverse
EndProcedure
Debug try(2)
Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 21:56
par Ar-S
SPH, tu fais "1 divisé par a", comment veux tu que ça te donne l'inverse ?

Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 22:16
par Backup
...............
Re: Retourner l'inverse d'une variable
Publié : mar. 19/juil./2011 23:44
par Ar-S
ooops je croyais qu'il essayait de retourner l'inverse aussi

Re: Retourner l'inverse d'une variable
Publié : mer. 20/juil./2011 8:05
par Kwai chang caine
Merci beaucoup à tous de vous réponses
Pour cette fois c'est CASE qui a gagné une tringle a rideau

C'est exactement ce que je cherchais
J'avais essayé :
Mais pas pensé à
Merci beaucoup CASE
L'idée de TYPHOON n'est pas bete non plus et marche super bien pour une booleene
Mais pour me la peter, j'avais décidé d'utiliser les fonctions, et donc NOT
Encore merci à tous et tres bonne journée
Re: Retourner l'inverse d'une variable [Résolu]
Publié : mer. 20/juil./2011 13:37
par graph100
@Ar-S : Faut mettre les choses au point
L'inverse et l'opposé ne sont pas la même chose.
L'inverse :
L'opposé :
Maintenant pour un booléen on dit l'inverse par abus de langage, (ou alors c'est une notion purement booléenne)
car l'espace des booléens ne compte que 0 et 1, (en théorie puisque sur PB n'a pas de type booléen en natif)
C'est donc le complémentaire ou l'inverse.
Re: Retourner l'inverse d'une variable
Publié : mer. 20/juil./2011 13:50
par SPH
Dobro a écrit :normal , il faut typer la procedure !!
comme ça :
Code : Tout sélectionner
Procedure.f Try(a)
inverse.f=1/a
ProcedureReturn inverse.f
EndProcedure
Debug try(2)
Ha, je cherchais en effet. Merci

Re: Retourner l'inverse d'une variable [Résolu]
Publié : mer. 20/juil./2011 14:43
par blendman
pour un booleen, j'utilise la même technique que Typhoon
L'avantage est que tu n'as pas à tester la variable forcément

.
Par exemple, dans mon soft animatoon, pour ajouter un random sur la taille (ou pas) je mets uniquement ça :
random_size est global et donc je le connais toujours, et je le change en cliquant sur une checkbox par exemple, et la taille de mon brush se met à jour toute seule, comme elle est sympathique

. Même pas besoin de tester random_size du coup.
Un pitit exemple :
Code : Tout sélectionner
size = 32
random_size = 1
Debug size = random_size*(1+Random(size-1)) +(1-random_size)*size
random_size = 0
Debug size = random_size*(1+Random(size-1)) +(1-random_size)*size
Re: Retourner l'inverse d'une variable [Résolu]
Publié : mer. 20/juil./2011 15:03
par gnozal
En Purebasic,
Le NOT
booléen, c'est ~
Bit | Resultat
--------------
0 | 1
1 | 0
C'est différent du NOT
logique (NOT)
Valeur| Resultat
---------------
Faux | Vrai
Vrai | Faux
En PB, ~0 = -1 alors que (NOT 0) = 1
(Faux = #False = 0, et Vrai = #True = 1)
Dans les 2 cas, le résultat est du type 'Vrai', car en PB est 'Vrai' tout ce qui n'est pas 'Faux', c'est à dire toute valeur <> 0.
Code : Tout sélectionner
bool = ~bool
Debug bool
bool = ~bool
Debug bool
bool = ~bool
Debug bool
bool = ~bool
Debug bool
bool = ~bool
Debug bool
bool = (Not bool)
Debug bool
bool = (Not bool)
Debug bool
bool = (Not bool)
Debug bool
bool = (Not bool)
Debug bool
bool = (Not bool)
Debug bool