[AXE]Number input en Axe ?
3 participants
Page 1 sur 1
[AXE]Number input en Axe ?
Quel problème pour les 90% des programmeurs Axe que les entrées utilisateurs... Aujourd'huis nous allons voir comment faire un number input en Axe.
Commençons par le début, la syntaxe de la commande input est celle la :input->A qui enregistre une chaine de caractere ascII a l'adresse A... A sera don utiliser ici comme un pointeur.
premières lignes de code :
Une fois cela fais nous savons que le numéro des caractère des chiffres de 0 a 9 sont 48,49,50....
Une fois cela su il est facile de faire un number input a UN seul chiffre :
Le problèmes maintenant c'est d'y insérer plusieurs chiffres donc de faire un number input pour les nombres et non les chiffres...
La technique va être relativement similaire il faut juste y intégrer une seconde boucle qui parcours tout les octets de {A} et qui les test tous après il ne nous reste plus qu'a ajouter le numéro de l'octets ( multiplier par 10 selon la place ) a B exemple :
on prends 567
c'est donc egale a (7)+(6*10)+(5*100)
Intégrons ceci a un algorithme :
Et voila notre code est finis.... quoique non, testez le et que voyez vous ? tout les chiffres sont a l'envers... pour corriger ce problèmes il suffit de lire les octets depuis la fin de la chaîne :
Et la tout devrais marcher !
puis en version optimisé en nombre de ligne (6):
et en version optimiser en taille sur la calculatrice :
Commençons par le début, la syntaxe de la commande input est celle la :input->A qui enregistre une chaine de caractere ascII a l'adresse A... A sera don utiliser ici comme un pointeur.
premières lignes de code :
- Code:
:.INPUT
:input->A
Une fois cela fais nous savons que le numéro des caractère des chiffres de 0 a 9 sont 48,49,50....
Une fois cela su il est facile de faire un number input a UN seul chiffre :
- Code:
:.INPUT
:input->A
:0->B
:for(Y,0,9)
:If {A}=(Y+48)
:B+Y->B
:End
:End
:output(0,0,B>Dec)
Le problèmes maintenant c'est d'y insérer plusieurs chiffres donc de faire un number input pour les nombres et non les chiffres...
La technique va être relativement similaire il faut juste y intégrer une seconde boucle qui parcours tout les octets de {A} et qui les test tous après il ne nous reste plus qu'a ajouter le numéro de l'octets ( multiplier par 10 selon la place ) a B exemple :
on prends 567
c'est donc egale a (7)+(6*10)+(5*100)
Intégrons ceci a un algorithme :
- Code:
:.INPUT
:input->A
:0->B+1->K
:for(X,0,lenght(A)-1)
:for(Y,0,9)
:If {X+A}=(Y+48)
:Y*K+B->B //ajoute le nombre selon le tokens et selon la place dans la chaîne
:K*10->K //multiplie par 10 pour avoir le numéro suivant dans la chaîne
:End
:End
:End
:output(0,0,B>Dec)
Et voila notre code est finis.... quoique non, testez le et que voyez vous ? tout les chiffres sont a l'envers... pour corriger ce problèmes il suffit de lire les octets depuis la fin de la chaîne :
- Code:
:.INPUT
:input->A
:0->B+1->K
:for(X,0,lenght(A)-1)
:for(Y,0,9)
:If {length(A)-1-X+A}=(Y+48)
:Y*K+B->B //ajoute le nombre selon le tokens et selon la place dans la chaîne
:K*10->K //multiplie par 10 pour avoir le numéro suivant dans la chaîne
:End
:End
:End
:output(0,0,B>Dec)
Et la tout devrais marcher !
puis en version optimisé en nombre de ligne (6):
- Spoiler:
- Code:
:.INPUT
:input->A
:for(X,1->K-1->B,lenght(A))
:for(Y,0,9)
:{length(A)-1-X+A}-Y-48??Y*select(K,*10->K)+B->B
:End
:End
:output(0,,B>Dec)
et en version optimiser en taille sur la calculatrice :
- Spoiler:
- Code:
:A venir
Dernière édition par sachiix69 le Dim 3 Fév - 13:59, édité 2 fois
nikitouzz- Platinum 1
- Sexe :
Age : 29
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-Basic 68K
- - TI-Basic Nspire
- - TI-73
- - TI-76.fr
- - TI-82 Stats.fr
- - TI-83+
- - TI-84+
- - TI-92
- - TI-Nspire
- - TI-Nspire CX
Hayleia- Or 4
- Age : 30
Messages : 406
Date d'inscription : 03/08/2012
Points Forum : 46
Points Concours : 4
Langages :- - TI-Basic Z80
- - Axe Parser
- - TI-76.fr
- - TI-83+
- - TI-84+ SE
- - TI-Nspire CX
Re: [AXE]Number input en Axe ?
Je compte y ajouter un input pour les letttre, les liste... et tout ce qu'on peut faire en basic je completerais Et je n'avais pas vu cette optimisation en copier coller.
nikitouzz- Platinum 1
- Sexe :
Age : 29
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-Basic 68K
- - TI-Basic Nspire
- - TI-73
- - TI-76.fr
- - TI-82 Stats.fr
- - TI-83+
- - TI-84+
- - TI-92
- - TI-Nspire
- - TI-Nspire CX
Re: [AXE]Number input en Axe ?
Fiouuu... C'est vraiment compliqué, l'Axe.
Et je trouve la syntaxe...bizarre. ( --notroll )
Et je trouve la syntaxe...bizarre. ( --notroll )
persalteas- Platinum 2
- Sexe :
Age : 29
Messages : 2068
Date d'inscription : 30/06/2010
Etudes : PACES (médecine)
Points Forum : 114
Points Concours : 10
Langages :- - TI-Basic Z80
- - xLib
- - Grammer
- - TI-Basic Nspire
- - TI-82 Stats.fr
- - TI-83
- - TI-83+
- - TI-84+ SE
- - TI-86
- - TI-Nspire
- - TI-Nspire CX
- - Casio Collège
- - Casio Graph
Re: [AXE]Number input en Axe ?
Bah c'est du bas niveau quand meme l'axe meme si c;est pas aussi bas que l'asm ou l'hexa. apres non c'est pas extrenement compliquer quand meme mais je compte faire un tutorial identique pour l'input des liste,chaine,matrice... en gros toute ce qu'on peut faire ne basic.
nikitouzz- Platinum 1
- Sexe :
Age : 29
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-Basic 68K
- - TI-Basic Nspire
- - TI-73
- - TI-76.fr
- - TI-82 Stats.fr
- - TI-83+
- - TI-84+
- - TI-92
- - TI-Nspire
- - TI-Nspire CX
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum