Retourner l'inverse d'une variable [Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Retourner l'inverse d'une variable [Résolu]

Message par Kwai chang caine »

Bonjour à tous

Ca doit etre tellement simple que je ne trouve pas :oops:
Remarquez apres 10 h de prog :roll:

Comment retourner l'inverse d'une variable, la fonction NOT ne marche pas avec procedure return :(

Code : Tout sélectionner

Procedure Try()
 a = #True
 ProcedureReturn Not a
EndProcedure
Merci et bonne soirée
Dernière modification par Kwai chang caine le mer. 20/juil./2011 8:06, modifié 1 fois.
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Retourner l'inverse d'une variable

Message par Backup »

................
Dernière modification par Backup le ven. 30/sept./2011 19:56, modifié 1 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Retourner l'inverse d'une variable

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

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 :roll:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Retourner l'inverse d'une variable

Message par Thyphoon »

Code : Tout sélectionner

Procedure Try(a)
  Procedurereturn 1-a
Endprocedure
comma ça si

a=1 alors 1-1 la procedure retourne 0
a=0 alors 1-0 la procedure retourne 1
voilà :mrgreen:
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Retourner l'inverse d'une variable

Message par case »

Procedure test(a)
ProcedureReturn (Not a)
EndProcedure
ImageImage
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: Retourner l'inverse d'une variable

Message 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)
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Retourner l'inverse d'une variable

Message par SPH »

Ca, ca devrait marcher mais ca ne fonctionne pas. Normal, je ne fais jamais de procedures :mrgreen:

Code : Tout sélectionner

Procedure Try(a)
  inverse.f=1/a
  ProcedureReturn inverse
EndProcedure

Debug try(2)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Retourner l'inverse d'une variable

Message par Ar-S »

SPH, tu fais "1 divisé par a", comment veux tu que ça te donne l'inverse ? :lol:
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Retourner l'inverse d'une variable

Message par Backup »

...............
Dernière modification par Backup le ven. 30/sept./2011 19:56, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Retourner l'inverse d'une variable

Message par Ar-S »

ooops je croyais qu'il essayait de retourner l'inverse aussi :?
~~~~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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Retourner l'inverse d'une variable

Message par Kwai chang caine »

Merci beaucoup à tous de vous réponses 8)

Pour cette fois c'est CASE qui a gagné une tringle a rideau :D
C'est exactement ce que je cherchais

J'avais essayé :

Code : Tout sélectionner

ProcedureReturn Not a

Code : Tout sélectionner

ProcedureReturn Not (a)
Mais pas pensé à

Code : Tout sélectionner

ProcedureReturn (Not a)
:oops:

Merci beaucoup CASE :wink:

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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Retourner l'inverse d'une variable [Résolu]

Message par graph100 »

@Ar-S : Faut mettre les choses au point :lol:

L'inverse et l'opposé ne sont pas la même chose.

L'inverse :

Code : Tout sélectionner

inverse_a.f = 1 / a
L'opposé :

Code : Tout sélectionner

oppose_a = - a
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.
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Retourner l'inverse d'une variable

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Retourner l'inverse d'une variable [Résolu]

Message par blendman »

pour un booleen, j'utilise la même technique que Typhoon :)

Code : Tout sélectionner

var = 1-var
L'avantage est que tu n'as pas à tester la variable forcément :D.
Par exemple, dans mon soft animatoon, pour ajouter un random sur la taille (ou pas) je mets uniquement ça :

Code : Tout sélectionner

random_size*(1+Random(size-1)) +(1-random_size)*size
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 :D. 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 
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Retourner l'inverse d'une variable [Résolu]

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