Résultat étrange avec booléens Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème

Tout 82
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Tout 82

Ven 29 Mar 2024 - Bienvenue,

Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Connexion

Récupérer mon mot de passe



Chatbox externe


Derniers sujets
» [JEU] Mon voisin du dessous
Résultat étrange avec booléens EmptyDim 16 Oct 2022 - 21:11 par Wistaro

» Bonne année 2018!
Résultat étrange avec booléens EmptyVen 2 Nov 2018 - 19:42 par Ti64CLi++

» Lancement du TI-Concours 2017 !
Résultat étrange avec booléens EmptySam 20 Mai 2017 - 0:27 par Paulo1026

» Chaînes Youtube des membres
Résultat étrange avec booléens EmptyVen 19 Mai 2017 - 22:41 par Wistaro

» cacul du taux d'intêret
Résultat étrange avec booléens EmptyVen 24 Mar 2017 - 21:50 par m@thieu41

» [Projet] Un mario by tout82
Résultat étrange avec booléens EmptyDim 29 Jan 2017 - 14:09 par Wistaro

» Cherche documentation assembleur TI82stat
Résultat étrange avec booléens EmptyMer 25 Jan 2017 - 12:29 par Ti64CLi++

» Probleme Ti-82 Stats fr
Résultat étrange avec booléens EmptyJeu 12 Jan 2017 - 13:56 par Ti64CLi++

» ROM 82 stats.fr
Résultat étrange avec booléens EmptyJeu 15 Déc 2016 - 10:24 par Ti64CLi++

Partenaires
TI-Planet Espace-TI : Forum

Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)

Les posteurs les plus actifs du mois
Aucun utilisateur

Le Deal du moment :
Fnac : 2 Funko Pop achetées : le 3ème ...
Voir le deal

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Résultat étrange avec booléens

2 participants

Aller en bas  Message [Page 1 sur 1]

1Résultat étrange avec booléens Empty Résultat étrange avec booléens Mar 11 Nov 2014 - 12:02

Mingerton

Mingerton
----------------------
----------------------

Salut à tous !

L'autre jour notre prof nous a "prescrit" un programme pour réaliser l'encadrement d'une solution par dichotomie. Un truc à la con donc, vraiment pas compliqué.

Seulement j'ai pas pu m'empêcher de le revoir un petit coup pour l'optimiser, et j'ai rencontré un problème dans la gestion de conditions à partir de booléens. Ce type de choses ne me pose d'habitude aucun problème dans mes codes, mais là on voit que le résultat diffère selon si les booléens sont utilisés ou pas.

Le code fonctionnel, sans les booléens :

Code:
Input "Y1=?",Str1
Prompt A,B,E
Str1->Y1
Repeat E-B+A>0
.5(A+B->M
If Y1(A)Y1(M)≤0
Then
M->B
Else
M->A
End
End
Disp A,B

// Valeurs à l'entrée : Y1=x^3-6x^2+6
//A=0 ; B=4 ; E=0,01
//Valeurs en sortie : A=1,1015625 ; B=1,109375

Après vérification, pour ces entrées les bonnes valeurs de A et B en sortie sont bien celles que j'ai citées dans ce code.

Maintenant, le code défectueux qui me semble pourtant correct :

Code:
Input "Y1=?",Str1
Prompt A,B,E
Str1->Y1
Repeat E-B+A                     //<-Cas n°1
.5(A+B->M
If not(Y1(A)Y1(M                //<-Cas n°2
Then
M->B
Else
M->A
End
End
Disp A,B

Dans le cas n°1, les valeurs en sortie sont 0 et 2. Dans le cas n°2, les valeurs en sortie sont 3,9921875 et 4, avec bien sûr les mêmes valeurs en entrée. Dans le cas 1+2, les valeurs en sortie sont 2 et 4.

Voilà, je comprends pas bien ce qui se passe, pourquoi lorsque j'utilise un booléen qui a a priori le même effet je n'obtiens pas le même résultat.scratch

2Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens Mar 11 Nov 2014 - 17:01

Linkakro

Linkakro
----------------------
----------------------

Tu as oublié le raisonnement de conversion entre nombre et booléen dans les langages C et TI-Basic.
Tu dois effectuer des comparaisons d'ordre tandis que tes modifications effectuent uniquement des comparaisons d'égalité à zéro.
En effet tout nombre non nul est vrai et seul zéro est faux.
Code:
If A
If A!=0

If not(A
If A=0

If A>0
If not(A<=0
Code:

E-B+A>0
E>B-A

E-B+A
E-B+A != 0

If Y1(A)Y1(M)≤0
Y1(A)<0 and Y1(M)>0 or Y1(A)>0 and Y1(M)<0 or Y1(A)Y1(M)=0   

not(Y1(A)Y1(M
Y1(A)Y1(M)=0
Je suis curieux de votre point de vue à propos d'un détail. La condition Y1(A)Y1(M)≤0 sert à repérer l'opposition de signe. Ce n'est pas ce que j'avais en tête ( Y1(M)>0 ) mais c'est cool ! Comme ça pas besoin de prévoir à l'avance la comparaison de Y1(A) et Y1(B).



Dernière édition par Linkakro le Mar 11 Nov 2014 - 17:25, édité 1 fois

3Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens Mar 11 Nov 2014 - 17:16

Mingerton

Mingerton
----------------------
----------------------

Ah ok ! je pensais qu'un négatif correspondait à faux, alors qu'en fait c'est que 0. Donc du coup je pense que je vais laisser le code où il est, puisque j'y gagne rien en espace et en vitesse avec des "optimisations" en plus.

Deux derniers trucs :

Code:
Input "Y1=?",Str1          // Remarque n°1
Prompt A,B,E
Str1->Y1
Repeat E-B+A>0
.5(A+B->M
If Y1(A)Y1(M)≤0            // Remarque n°2
Then
M->B
Else
M->A
End
End
Disp A,B

- Y a t'il un moyen plus simple de demander l'expression de la fonction autrement qu'en passant par une chaîne, comme je l'ai fait ?
- Lorsque je retire la dernière parenthèse de la ligne, les affichages changent. Comment ça se fait ?

Merci en tout cas (pour le compliment sur la condition) Bien Joué

4Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens Mar 11 Nov 2014 - 17:31

Linkakro

Linkakro
----------------------
----------------------

Il est possible de saisir une équation de courbe Y# avec Prompt ou Input, mais cela obligera à ajouter des guillemets comme pour Prompt d'une chaîne Str#.

Voici comment est interpétée ta condition sans la dernière parenthèse fermante et la solution pour l'éviter.
Code:
erreur
Y1(A)Y1(M≤0
Y1(A)Y1(M≤0)

solution
0≥Y1(A)Y1(M

5Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens Mar 11 Nov 2014 - 17:49

Mingerton

Mingerton
----------------------
----------------------

Pour la parenthèse, j'ai pensé à ça aussi, mais je voulais comprendre ce qui se passait.

Donc on a quelque chose comme ça :
Code:
Prompt Y1,A,B,E
Repeat E>B-A
.5(A+B->M
If 0≥Y1(A)Y1(M
Then
M->B
Else
M->A
End
End
Disp A,B

Ok c'est parfait ! Bien Joué

6Résultat étrange avec booléens Empty Re: Résultat étrange avec booléens Mar 11 Nov 2014 - 17:57

Linkakro

Linkakro
----------------------
----------------------

Tu as oublié depuis ta seconde intervention que tu peux écrire E>B-A. J'édite ton dernier message directement pour ne pas se répéter.

Contenu sponsorisé



Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum