Posté le 12/01/2017 20:20
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 226 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 12/01/2017 20:25 | #
Tu peux stocker les noms avec les chaînes de caractères.
Citer : Posté le 12/01/2017 20:26 | #
Tu peux stocker les noms dans des chaînes de caractères (Str) sur les modèles récents : vois le tutoriel de Totoyo.
Tu peux également stocker jusqu'à 8 caractères dans le nom d'une liste :
// ou de manière équivalente
"NOM"→List 1
Edit : Cette technique est utile car elle te permet de faire référence à la liste par son nom après coup :
C'est également utile pour éviter de donner le numéro d'une liste. Cela permet de ne pas écraser une liste existante, mais plutôt de laisser la calculatrice choisir une liste vide pour y stocker tes données.
4→List "MON-JEU"[2] // par exemple
Citer : Posté le 12/01/2017 20:32 | #
oui je suis d'accord avec ça mais le probléme est que je vais devoir créer une liste par joueur donc ça me fera 5 liste. C'est pour ça que je cherche si il y a pas un autre moyen que celui ci. De plus j'ai de tableau des scores différents donc ça va me prendre dix liste. :/
Citer : Posté le 12/01/2017 20:35 | #
En effet, le nom d'une liste n'est pas vraiment une bonne solution (je disais plus ça pour la forme en fait). De la même manière, utiliser 5 Str différentes n'est pas convaincant.
Alors on peut peut-être faire mieux et stocker les noms comme des entiers. Par exemple, tu décides que "A" s'écrit "01" et "Z" s'écrit "26", puis tu extrapoles. Par exemple pour "MOI", tu stockes la valeur 131509. Tu dois alors te limiter car le nombre de chiffres disponibles est limité ; en l'occurrence, tu peux mettre jusqu'à 5 lettres sans souci (c'est un peu limité mais c'est déjà pas mal).
Ensuite dans ta liste, tu mets deux cases par joueur : une case pour le nom, suivie d'une case pour le score, par exemple.
On peut concevoir un stockage plus rigoureux qui permet de faire passer 8 lettres sans problème.
Citer : Posté le 12/01/2017 21:42 | #
Je pense avoir trouver une solution avec une matrice de 5lignes*9colones. en gros dans les 8 premiéres cases de la ligne je stocke la place de la lettre et 0 si c'est finis et ensuite dans la 9e colonne je stocke le score ensuite je balaye ma ligne pour reconstituer le mot. Les deux seuls inconvenants sont que ça va me prendre a minimum 450 octet (10 octet par case) et que la personne va devoir taper son nom lettre par lettre. Avez des remarques sur cette solution ? Ou des autres proposition?
Citer : Posté le 12/01/2017 21:45 | #
L'idée est tout à fait là. Tu peux stocker ton nombre en base 27 pour obtenir le résultat souhaité. Tu peux alors mettre de A à Z et des espaces, et tu peux placer 8 lettres dans un entier pour minimiser la place utilisée.
Au lieu de rajouter un 0 à la fin, tu peux remplir avec des espaces. À l'affichage, ça ne se verra pas
Avec cette méthode, pour 5 scores tu n'as besoin que de 120 octets, au lieu de 540 (c'est 12 octets par case, pour autant que je me souvienne).
Citer : Posté le 13/01/2017 11:01 | #
Je ne connais pas le système en base 27 ni les système en base sauf pour le binaire Et aussi es ce que la calculatrice et capable de gerer ça?
Citer : Posté le 13/01/2017 11:04 | #
Si tu as compris le lien entre base 2 et base 10 la base 27 s'apprend facilement. la calto gère nativement base 16,8,10,2
Citer : Posté le 13/01/2017 11:20 | #
Oui mais je n'arrive pas a comprendre l'utilité de le mettre en base 27 car imaginons c=3 (position dans l'alphabet) bah
3 en base 10 est égale a 3 en base 27. Peut etre que je me suis trompe ?
Citer : Posté le 13/01/2017 11:27 | #
En base 27:
1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,
11,12,13,14,15,16,17,18,19,1a,1b,1c,1d,...
je vien de compter jusqu'a 40 si jamais tu as envie de stocker les accents. Sinon regarde du coté de la table ascii.
table ascii exemple
Citer : Posté le 13/01/2017 11:33 | #
ok je suis d'accord mais avec ma calculatrice quand je vais faire mon algo pour convertir mon nombre en base 27 elle va pas mettre un O toute seul si ? vu que de base elle ne sais faire que des base 2 10 8 16
Citer : Posté le 13/01/2017 11:34 | #
Non tu met plusieur if qui s'enchaine...
0->I
while A!=0
IF Mod(a,27)=13
then locate I,1,"D"
ElseIF Mod(a,27)=14
then locate I,1,"E"
ElseIF Mod(a,27)=22
then locate I,1,"M"
ElseIF Mod(a,27)=24
then locate I,1,"O"
Else
ifend
ifend
ifend
ifend
(A-mod(A,27))/27->A
'on va donc recuperer la prochaine lettre
I+1->I
'On evite la sur ecriture
whileEnd
Citer : Posté le 13/01/2017 11:53 | #
donc si je comprend bien si je tape sam traduit en base 27
s=19e position donc 19 en base 27=J
a=1er position donc 1 en base 27=1
m=13e position donc 13 en base 27=D
donc sam=j1d
le seul probléme c'est que si je stocke ça; je vais devoir le stocker en chaine de caractére sauf que moi je veux le pouvoir stocker dans une matrice ou dans une liste donc c'est problématique non?
Citer : Posté le 13/01/2017 12:08 | #
"S" n'est pas disponible en base 27 mais en base 28(enfin je parle des bases conventionnelles c'est a dire qui commence par 1,2,3,4,5,6,7,8,9).
mais bon c'est toi qui code donc tu ne vas surement pas mettre un 1,2 ou 3 dans le nom
ce qui donne a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,-
a=1,b=2,...,m=13,...,s=19
donc sam=19*27^2+1*27^1+13*27^0=13891 en base 27 si tu choisi a=1 et "-"=27
c'est donc un nombre que tu peux tout à fait stocker
Citer : Posté le 13/01/2017 12:20 | #
d'accord et pour le convertir dans l'autre sens commenton fais pour savoir l'ordre?
Citer : Posté le 13/01/2017 12:25 | #
mod(A,27) te donneras la valeur de la dernière lettre donc mod(a,27)=13
puis tu fait de manière recursive (A-mod(a,27))/27-A
excplications tu enlèves la dernière lettre et tu divises par 27 pour "décaler" la tête de lecture.
mod(a,27) donnera donc 1
si tu veux tu peux lire mon antépénultième message j'ai un code de démo recopie le sur calto.
Citer : Posté le 13/01/2017 12:34 | #
ah oui merci je n'avais pas compris mais la je viens de comprendre. Je te remercie du temps que tu as passé a m'expliquer :
Citer : Posté le 13/01/2017 14:19 | #
Je ne sais pas s'il est toujours utile que je l'explique, mais l'idée de la base 27 c'est que tu as 27 caractères différents (26 lettres et l'espace), et tu identifies chaque caractère à un « digit en base 27 », à savoir des entiers de 0 à 26.
Ensuite tu stockes la valeur entière obtenue en ajoutant ces termes pour former un mot (tu sommes des termes de la forme lettre * 27^n, où la lettre est entre 0 et 26 et n la position de la lettre dans ton mot). L'intérêt c'est que la base 27 est le système de représentation d'un texte à 27 lettres qui donnera les plus petites valeurs entières, donc, pour un nombre utilisable maximal donné (ici aux alentours de 10^12, après la calculatrice fait des arrondis que l'on ne veut pas), le maximum de lettres.
Ça se généralise bien avec n'importe quel nombre de lettres, mais au fond que ce soit en base 27 ou non, c'est simplement la façon dont on l'interprète. On pourrait avoir le même nombre en base 5.