Page 1 of 4

Probleme expr(str1

PostPosted: 15 Mar 2015, 19:49
by PiR
Bonjour,
J'essaye de faire un programme de calcul mental.
J'ai un probleme, je génère bien des calculs aléatoire mais je ne peux pas comparer l'expression de ma chaine où il y a le calcul avec celle de la réponse de l'utilisateur.
Voici le code:
Code: Select all
0->C
0->X
" ->Str5
"+-*/->Str6
ClrHome
Lbl A
randInt(1,10)->A
{1,2->L1
{A,A->L2
LinReg(a+bx) L1,L2,Y1
Equ>String(Y1,Str4
DelVar Y1
ClrList L1,L2
sub(Str4,1,length(Str4)-3->Str4
Str4+Str5->Str5
If X=0
Then
sub(Str6,randInt(1,4),1)+Str5->Str5
X+1->X
Goto A
End
Output(1,1,Str5
Input Str3
End
If expr(Str5)=expr(Str3

Re: Probleme expr(str1

PostPosted: 15 Mar 2015, 20:15
by Mingerton
Il n'est pas possible de stocker la flèche STO dans une chaîne de cette manière. Je pense que le bug vient de là, puisque tu fais expr de Str5 ensuite. (pardonnez moi, je devais être très fatigué pour écrire une ânerie pareille ! ^^) Enfin, je suppose que ü=STO car c'est une syntaxe courante. Je peux me tromper bien sûr.

Pense à corriger ta syntaxe d'ailleurs, c'est pas très lisible et on peut pas comprendre toutes les variables ;)

Re: Probleme expr(str1

PostPosted: 15 Mar 2015, 22:42
by PiR
J'ai regardé et ma chaine 5 est bien du type 5+9
Le problème vient du exp(Str5

PS: effectivement j'avais pas fait attention à la syntaxe, c'est corrigé

Re: Probleme expr(str1

PostPosted: 16 Mar 2015, 10:06
by Wistaro
Le problème est résolu ?

Re: Probleme expr(str1

PostPosted: 16 Mar 2015, 11:00
by Bisam
Je pense que le problème vient de l'espace au début de la chaîne Str5, initialisée par " ->Str5
Si tu tapes "->Str5, cela devrait marcher.

Re: Probleme expr(str1

PostPosted: 16 Mar 2015, 12:12
by Wistaro
En Ti-basic la fonction expr() est pas mal buggué en fait.

Par exemple, une erreur sur cette fonction renvoie un "Erreur". Sauf que quand tu fais "Goto " pour accéder à la ligne de l'erreur, ça te renvoie vers l'écran principal, à la ligne "prgmEXEMPLE".

De plus, comme le dit Bisam, un espace en trop dans la chaîne fait planter le programme. Cela devrait, à priori, corriger le problème.

Re: Probleme expr(str1

PostPosted: 16 Mar 2015, 13:43
by Bisam
Ce ne sont pas des bugs à proprement parler.

"expr" sert à convertir une chaîne en expression... or en TI-Basic z80, l'espace n'a aucune signification et cause une erreur lors du parsing, ce qui est normal.

Pour ce qui est du renvoi au mauvais endroit lors d'une erreur, c'est plus étrange, mais cela vient certainement là encore du fait que le programme se modifie lui-même au moment de l'exécution de l'instruction "expr".

Re: Probleme expr(str1

PostPosted: 16 Mar 2015, 15:42
by grosged
On pourrait directement faire un

Code: Select all
sub("+-*/",randInt(1,4),1→Str5

et ensuite ajouter un nombre en début , et un autre (nombre) en fin de chaîne Str5

Re: Probleme expr(str1

PostPosted: 16 Mar 2015, 16:29
by Bisam
En étant malin, on peut même récupérer les deux nombres d'un seul coup avec un seul passage par LinReg...

Re: Probleme expr(str1

PostPosted: 16 Mar 2015, 16:40
by grosged
ça ne serait pas en ajoutant au premier nombre, le deuxième exprimé en dixièmes ?
genre 4.9
Et dans ce cas, on remplacerait le "." par l'une des opérations +-*/ ?
(Le nombre 10 poserait problème)