π
<-
Chat plein-écran
[^]

Trouver lettre dans chaine

Trouver lettre dans chaine

Unread postby PiR » 25 Feb 2015, 18:35

Bonjour,
Voici mon problème, j'ai un programme convertisseur de base et j'aimerais que quand je tapes un mot comme BONJOUR le prgm me dise qu'il est en base 29.
En gros qu'il cherche la lettre dans le mot qui est la plus loin dans l'alphabet (ici le u).
Comment faire ça ?
Merci d'avance

PS: le prgm de base est celui d'Openclassrooms (http://openclassrooms.com/courses/appre ... r-de-bases)
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: Trouver lettre dans chaine

Unread postby Adriweb » 25 Feb 2015, 18:42

Un algorithme naïf :
  • Tu crées une chaine contenant tout l'alphabet.
  • Pour chaque lettre de l'alphabet, tu regardes ce que donne la commande inString sur ta chaîne originale (elle donne la position d'une sous-chaîne)
  • Tu arrête ta boucle quand la commande retournera 0 (sous-chaîne non trouvée), donc la lettre la plus loin dans l'alphabet sera celle juste avant.

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.4%
 
Posts: 14670
Images: 1118
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Trouver lettre dans chaine

Unread postby PiR » 25 Feb 2015, 18:43

Ah oui, je n'y avais pas pensé merci :)
Last edited by PiR on 25 Feb 2015, 18:53, edited 1 time in total.
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: Trouver lettre dans chaine

Unread postby Adriweb » 25 Feb 2015, 18:44

Tu peux même commencer la recherche à l'envers, d'ailleurs, ça ira plus vite :)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.4%
 
Posts: 14670
Images: 1118
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Trouver lettre dans chaine

Unread postby critor » 25 Feb 2015, 18:49

Un peu meilleur en complexité:
Parcours ta chaîne à l'aide d'une boucle 'pour' ('for' sur la calculatrice), teste chaque caractère et garde la valeur la plus élevée.

Pour connaître la longueur de la chaîne, tu utilises l'instruction 'longueur('.
Pour récupérer un caractère de la chaîne, tu utilises l'instruction 'sous-Chaîne('.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 45%
 
Posts: 41669
Images: 15208
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Trouver lettre dans chaine

Unread postby PiR » 25 Feb 2015, 18:56

Super merci
Last edited by PiR on 25 Feb 2015, 18:59, edited 1 time in total.
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: Trouver lettre dans chaine

Unread postby Adriweb » 25 Feb 2015, 18:57

La sous-chaine est lettre par lettre ce que tu veux regarder, donc avec la commande sub : http://tibasicdev.wikidot.com/sub

@Critor :
Ca aurait été ma proposition, mais il n'y a apparemment pas de ord() ou chr() sur z80 :(
(cf http://tibasicdev.wikidot.com/strings)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.4%
 
Posts: 14670
Images: 1118
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Trouver lettre dans chaine

Unread postby grosged » 25 Feb 2015, 22:21

Autre façon de faire, ...plus "tordue" héhé ! :
On n'utilise plus de chaîne mais uniquement des variables, en l'occurence les 26 lettres de l'alphabet (rien que ça!)
avec A=10, B=11 ....jusqu'à Z=35
(je me base sur le fait que A en hexadécimal vaut 10 dans notre base ordinaire)
Code: Select all
11→B
19→J
23→N
24→O
27→R
30→U
"BONJOUR→Str1
0
For(θ,1,length(Str1
max(Ans,expr(sub(Str1,θ,1
End
Ans+1→θ                  ;  BASE
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: Trouver lettre dans chaine

Unread postby PiR » 25 Feb 2015, 22:58

Merci, je vais quand même garder la méthode avec les chaines par contre je ne sais pas comment dire que le C est après le B dans l'alphabet
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: Trouver lettre dans chaine

Unread postby grosged » 26 Feb 2015, 08:30

Comme l'ont mentionné Adriweb & Critor,

on le saura grâce à sa position dans cette chaîne:
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Et c'est l'instruction inString(chaîne,sous-chaîne,position d'où démarrera la recherche )
qui va faire le boulot (à noter qu'on peut se passer du dernier paramètre si l'on veut scruter depuis le début de la chaîne)

Ex:
Code: Select all
inString("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ","C"

nous donnera la valeur 13


Et l'on aura recours à l'instruction sub(chaîne,position,longueur ) pour extirper un caractère (ou plus) d'une chaîne

Ex:
Code: Select all
sub("SAPERLIPOPETTE",6,1

nous donnera le caractère L
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

Next

Return to TI-Basic

Who is online

Users browsing this forum: No registered users and 25 guests

-
Search
-
Social TI-Planet
-
Featured topics
"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.
Offre de test des nouveautés de rentrée 2024 par Casio. Enseignant(e), reçois gratuitement 1 exemplaire, à ton choix, de la Graph Light ou bien de la Graph Math+
14€ remboursés par Casio sur l'achat de ta calculatrice Graph 35 d'ici le 31 Octobre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 90+E d'ici le 31 Décembre 2024
10€ remboursés par Casio sur l'achat de ta calculatrice Graph 25 d'ici le 31 Décembre 2024
8€ remboursés par Casio sur l'achat de ta calculatrice Graph Math+ d'ici le 31 Octobre 2024
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 3€ peu importe son état. Même non fonctionnelle et donc invendable, même ancienne Graph 35 non conforme aux programmes (pas de Python), même ancienne Graph 25/35 inutilisable aux examens (pas de mode examen) et donc invendable. Etiquette de retour fournie, pas de frais de port à payer.
3€ remboursés par Casio sur l'achat de ta calculatrice fx-92 Collège d'ici le 30 Septembre 2024
5€ de remise immédiate sur l'achat de ta calculatrice TI-83 Premium CE Edition Python chez les revendeurs partenaires
4€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced Edition Python chez les revendeurs partenaires
3€ de remise immédiate sur l'achat de ta calculatrice TI-82 Advanced chez les revendeurs partenaires
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234567891011121314
-
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.
1646 utilisateurs:
>1628 invités
>12 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)