π
<-

Probleme expr(str1

Re: Probleme expr(str1

Unread postby PiR » 16 Mar 2015, 23:06

Bisam wrote:Bah, tu fais exprès ou quoi ?
Code: Select all
Str5+Str4->Str5
évidemment !

AHHHH d'accord, il y a juste à inverser l'ordre
Ok, autant pour moi
Merci beaucoup
Mes programmes (tous en basic) sont ici
User avatar
PiR
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 46.9%
 
Posts: 45
Joined: 25 Feb 2015, 18:33
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale S-SI

Re: Probleme expr(str1

Unread postby grosged » 17 Mar 2015, 17:00

Je me suis amusé à écrire une version sans LinReg :

Code: Select all
"2345678910→Str0
"sub(Str0,1+int(X),randInt(1,1+(X≥8→Y1
Y1(rand9)+sub("+-*/",randInt(1,4),1)+Y1(rand9→Str1
Disp Str1,expr(Str1




Et maintenant, dans le détail:

Code: Select all
"2345678910→Str0

On aura pu se contenter d'un "12345678910→Str1 mais j'optimise légèrement : on n'a pas besoin d'avoir deux fois le caractère "1" représenté, finalement.

Code: Select all
"sub(Str0,1+int(X),randInt(1,1+(X≥8→Y1

Y1(x) a pour fonction (!) de piocher un caractère au hasard dans la chaîne Str0, à l'emplacement X ; et quand ça tombe sur "1" , cette fonction décide au hasard d'associer ou non le "0" voisin (ainsi, considérer "1" ou "10")
C'est vrai , qu'avec cette méthode , la TI a encore moins de chance de nous sortir un "10" (mais je pense que ce n'est pas trop grave : des calculs incluant "10" sont souvent moins intéressants car plus faciles à résoudre...)

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

rand9 nous "pondra" théoriquement des nombres entre 0 et 8.999999...(d'où le 1+int(X) dans le sub de la fonction Y1 )
Le sub("+-*/",randInt(1,4),1) nous donne au hasard l'une des 4 opérations.
Le tout stocké dans Str1.
(A noter qu'à ce stade, la TI traite donc le résultat de Y1 comme une chaîne)

Code: Select all
Disp Str1,expr(Str1

Affichage du calcul , et de son résultat.
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Probleme expr(str1

Unread postby PiR » 17 Mar 2015, 18:05

WOWOWOWOWOWOW (bon d'accord je m'emballe)
Merci Grosged ! :D
Mes programmes (tous en basic) sont ici
User avatar
PiR
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 46.9%
 
Posts: 45
Joined: 25 Feb 2015, 18:33
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale S-SI

Re: Probleme expr(str1

Unread postby Bisam » 19 Mar 2015, 00:46

Bravo Grosged !
J'avoue que je ne me rappelle pas avoir déjà pensé à utiliser les fonctions Y1,...,Y99 comme véritables fonctions dans un programme. Bien des perspectives se réouvrent...
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Probleme expr(str1

Unread postby Wistaro » 20 Mar 2015, 21:03

Bisam wrote: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".



Le programme se modifie lui-même ? C'est à dire?
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Probleme expr(str1

Unread postby Bisam » 20 Mar 2015, 21:49

Il ne se modifie pas réellement, mais la version en RAM du programme utilisée lors de l'exécution est modifiée pour être remplacée par celle où "expr(..." est substitué par sa valeur. C'est ce qui fait l'intérêt d'un langage interprété par opposition à un langage compilé : il peut modifier son propre code au moment de l'exécution.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Probleme expr(str1

Unread postby Wistaro » 20 Mar 2015, 21:52

Ok, merci de l'info !
Nouveau sur le site, ClaudeBot [spider] ? Avant de poster sur le chat et sur le forum, n'oublie pas de lire les règles. En cas de problème, tu peux m'envoyer un message, je réponds rapidement.

Liens utiles:
Image
Découvre mes programmes et mon site!
User avatar
WistaroSuper Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 88.5%
 
Posts: 3191
Images: 37
Joined: 25 Feb 2013, 16:21
Location: Toulouse
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ingénieur en électronique
YouTube: Wistaro
Twitter: Wistaro
GitHub: Wistaro

Re: Probleme expr(str1

Unread postby PiR » 22 Mar 2015, 11:47

Grosged, avec ta méthode, comment je fais pour avoir des chiffres>10 ?
Mes programmes (tous en basic) sont ici
User avatar
PiR
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 46.9%
 
Posts: 45
Joined: 25 Feb 2015, 18:33
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale S-SI

Re: Probleme expr(str1

Unread postby grosged » 24 Mar 2015, 19:04

Au delà de 10 ?..
Hmm, pour cela, il va falloir revoir un peu ma "copie" ;) :

Code: Select all
"0123456789→Str0
"sub(Str0,X+1,1→Y1

randInt(1,99→A
Y1(10fPart(.1A
If A>9:Y1(int(.1A))+Ans
Ans→Str1

randInt(1,99→B
Y1(10fPart(.1B
If B>9:Y1(int(.1B))+Ans

Str1+sub("+-*/",randInt(1,4),1)+Ans→Str1
Disp Str1,expr(Str1

On peut aussi mettre cette partie en sous-programme (avec ,en retour, le nombre contenu dans Ans ,sous forme de chaîne)
Code: Select all
randInt(1,99→A
Y1(10fPart(.1A
If A>9:Y1(int(.1A))+Ans
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Probleme expr(str1

Unread postby PiR » 24 Mar 2015, 22:25

cool merci :D
Mes programmes (tous en basic) sont ici
User avatar
PiR
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 46.9%
 
Posts: 45
Joined: 25 Feb 2015, 18:33
Gender: Male
Calculator(s):
MyCalcs profile
Class: Terminale S-SI

PreviousNext

Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 6 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2001 utilisateurs:
>1963 invités
>32 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)