Bonjour tout le monde !
J'ai un petit problème : je suis en train de faire un programme qui dresse le tableau de vérité d'une équation logique, style a+b.
En fait, le programme détecte les "+" et les remplace par des " or ", les "*" et les remplace par des " and " et les "/" (barre) pour les remplacer par des "not ".
Tout va bien, mais le souci, c'est le "not " : au lieu de me retourner 1 pour 0 et 0 pour 1, il me retourne le complément de 32bit, c'est à dire :
Pour not 1
= 0b11111111111111111111111111111110
Pour not 0
= 0b11111111111111111111111111111111
= Alors comment faire, auriez vous une astuce pour retourner un 1 en 0 ou 0 en 1 par une même fonction ?
J'ai déjà essayé une astuce qui consiste à faire abs(a-1) (a représentant la variable à inverser ou l'opération entre () à inverser) mais pour a=1, ça me fait donc abs(0) mais là ça me fait "ERROR argument must be a boolean expression or integer"
Bon v'là. Merci !
La fonction not
9 posts
• Page 1 of 1
La fonction not
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Posts: 1985
- Images: 8
- Joined: 02 Aug 2009, 00:00
- Location: 54, près de Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ingé Logiciel chez Amazon
Re: La fonction not
Le problème entre autres, est que tu travailles sur des variables qui sont de type réel, alors que les opérateurs logiques attendent des types bouléens...
Une solution peut-être:
Remplace not(a) par (a=0).
Une solution peut-être:
Remplace not(a) par (a=0).
-
critorAdmin
Niveau 19: CU (Créateur Universel)- Posts: 42242
- Images: 16691
- Joined: 25 Oct 2008, 00:00
- Location: Montpellier
- Gender:
- Calculator(s):→ MyCalcs profile
- YouTube: critor3000
- Twitter: critor2000
- GitHub: critor
Re: La fonction not
Bah pour les and et les or, tout marche mais le not il me retourne les 32 bit alors qu'il m'en faut qu'un 0=>1 ou 1=>0
En fait mon prog marche comme ça en gros : d'abord il remplace les +, *, / par les fonctions correspondantes EX : a+b*/c = a or b and non c
Ça ça marche, ensuite, il va faire toutes les possibilités du tableau en changeant les a, b, c, ... en conséquence dans des boucles pour à chaque tour calculer S...
EX :
0a : 0b : 0c : a or b and non c = 0
0a : 0b : 1c : a or b and non c = 0
. . . . .
ça marche très bien sans non dans la formule, mais avec un non...
Le not me retourne donc ce que j'ai déjà dit (en base BIN) :/ ou en base DEC il me retourne -2 pour 1 et -1 pour 0 !
En fait mon prog marche comme ça en gros : d'abord il remplace les +, *, / par les fonctions correspondantes EX : a+b*/c = a or b and non c
Ça ça marche, ensuite, il va faire toutes les possibilités du tableau en changeant les a, b, c, ... en conséquence dans des boucles pour à chaque tour calculer S...
EX :
0a : 0b : 0c : a or b and non c = 0
0a : 0b : 1c : a or b and non c = 0
. . . . .
ça marche très bien sans non dans la formule, mais avec un non...
Le not me retourne donc ce que j'ai déjà dit (en base BIN) :/ ou en base DEC il me retourne -2 pour 1 et -1 pour 0 !
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Posts: 1985
- Images: 8
- Joined: 02 Aug 2009, 00:00
- Location: 54, près de Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ingé Logiciel chez Amazon
Re: La fonction not
Ouuuuuuuh j'ai peut-être une fourberie là ! [...]
Je vais manger et je test !
Je vais manger et je test !

Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Posts: 1985
- Images: 8
- Joined: 02 Aug 2009, 00:00
- Location: 54, près de Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ingé Logiciel chez Amazon
Re: La fonction not
Euh, un truc tout bête : si tu ne travailles qu'avec des 0 et des 1, tu peux sans doute utiliser la fonction t->1-t. Elle transforme 0 en 1 et 1 en 0.
Mais le plus simple est tout de même d'utiliser les booléens "true" et "false"...
Mais le plus simple est tout de même d'utiliser les booléens "true" et "false"...
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: La fonction not
Ah oui, true et false ! ça marche bien pour le not aussi en effet, mais il faudra après que je me débrouille pour afficher des 0 et 1 à la place, dans le tableau...
Ben je vais voir, parce que je crois avoir trouvé une autre alternative avec les 1 et 0 et si ça va pas je verrai comme tu as dit.
Merci bien A+
Ben je vais voir, parce que je crois avoir trouvé une autre alternative avec les 1 et 0 et si ça va pas je verrai comme tu as dit.
Merci bien A+
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Posts: 1985
- Images: 8
- Joined: 02 Aug 2009, 00:00
- Location: 54, près de Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ingé Logiciel chez Amazon
Re: La fonction not
C'est bon !!! Ma technique à la mormoinleu (je l'avoue) fonctionne !
Ca évite que je change pour mettre des true et des false à la place des 0 et 1...
Je peux donc tracer la table de vérité d'une équation logique jusqu'à 8 variables, pour vérifier mes simplifications !
En fait, j'ai fait une bidouille : les "/" je les remplace bien par des not mais je fais +2 comme ça :
not 1 (en base DEC) =-2 +2 = 0
not 0 = -1 +2 = 1
(Je ne sais pas pourquoi "not" donne de tels résultats en DEC mais bon...
)
Et voilà ! Et ça marche aussi avec les parenthèses et tout ! Parfait !
Maintenant, je vais voir si il pourrait faire les tableaux de Karnaugh aussi...
Je crois que je le mettrais sur TI-BANK

Ca évite que je change pour mettre des true et des false à la place des 0 et 1...
Je peux donc tracer la table de vérité d'une équation logique jusqu'à 8 variables, pour vérifier mes simplifications !
En fait, j'ai fait une bidouille : les "/" je les remplace bien par des not mais je fais +2 comme ça :
not 1 (en base DEC) =-2 +2 = 0
not 0 = -1 +2 = 1
(Je ne sais pas pourquoi "not" donne de tels résultats en DEC mais bon...

Et voilà ! Et ça marche aussi avec les parenthèses et tout ! Parfait !
Maintenant, je vais voir si il pourrait faire les tableaux de Karnaugh aussi...
Je crois que je le mettrais sur TI-BANK

Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Posts: 1985
- Images: 8
- Joined: 02 Aug 2009, 00:00
- Location: 54, près de Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ingé Logiciel chez Amazon
Re: La fonction not
Pourquoi ne fais-tu pas simplement ce que je t'ai dit : 1-a ???
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Posts: 5670
- Joined: 11 Mar 2008, 00:00
- Location: Lyon
- Gender:
- Calculator(s):→ MyCalcs profile
Re: La fonction not
Ah oui oui, j'avais pas fait gaffe !
Oui, c'est futé ça ! J'avais pas compris en fait t-1-t . . .
Ben je vais faire comme ça, c'est tout de même beaucoup plus logique.
J'avais pas remarqué que c'était faisable aussi simplement.
Merci bien

Ben je vais faire comme ça, c'est tout de même beaucoup plus logique.
J'avais pas remarqué que c'était faisable aussi simplement.

Merci bien

Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Posts: 1985
- Images: 8
- Joined: 02 Aug 2009, 00:00
- Location: 54, près de Metz
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: Ingé Logiciel chez Amazon
9 posts
• Page 1 of 1
Who is online
Users browsing this forum: ClaudeBot [spider] and 1 guest