Page 1 sur 1
( résolu)les chiffres d'un nombre
Publié : lun. 13/avr./2009 0:45
par beauregard
bonsoir,
Faire des chiffres tout en bitmap, c'est déjà pas facile, mais en plus il y a un petit problème de code maintenant: par exemple sur un nombre, disons
7123, je voudrai décortiquer cette valeur:
connaître son unité( ici 3)
connaître sa dizaine( ici 2)
connaître sa centaine( ici 1)
et connaître sa, heu, millième( ici 7)
bien sûr, je voudrais pouvoir décortiquer un nombre bien plus important( 999.999.999 juste en dessous du milliard, cela devrai suffire

).
Publié : lun. 13/avr./2009 2:31
par Huitbit
Hello,
Une piste qui part de la notation à base décimale:
Rappel
2517=2*1E3 + 5*1E2 + 1*1E1 + 7*1E0
=2*1000 + 5*100 + 1*10 + 7*1
Dans le code :
n correspond à l'exposant de la puissance de 10 utilisée pour les calculs
nombre1 la donnée de départ
nombre2 un intermédiaire
Code : Tout sélectionner
nombre1.l=486251795
Debug ">>>>>>>>>>>>nombre1= "+Str(nombre1)
For n=9 To 1 Step -1
nombre2.l=Int(nombre1/Pow(10,n))*Pow(10,n)
Debug "n="+Str(n)+" nbre2="+Str(nombre2)
Debug ">>>>>>>>>>>>>>>>>>>>>>>résultat="+Str(Int((nombre1-nombre2)/Pow(10,n-1)))
Next n
Il ne reste plus qu'à additionner tous les "résultats" à la puissance "n-1" pour retrouver le nombre de départ.
Hasta la vista !
Publié : lun. 13/avr./2009 8:32
par Backup
sinon tu transforme en chaine de caractere avec
str()
puis tu utilise
mid() pour connaitre et isoler chaque chiffre de ton nombre
ces chaque chiffre tu les retransforme en valeur avec
val()
comme ça tu peux faire correspondre un dessin a un chiffre de 0 a 9
Code : Tout sélectionner
a=Random(100000) ; on genere un nombre au hasard
chaine$=Str(a) ; on transforme en chaine
Debug "le nombre est :"+chaine$
For i=1 To Len(chaine$) ; pour toute la longueur de la chaine
extrait$=Mid(chaine$,i,1); on recupere chaque caractere de la chaine$ contenant notre chiffre
Debug Val(extrait$) ; ici on a la valeur de chaque chiffre qui compose notre nombre :o)
; il suffit de faire correspondre chacun de ces chiffres en image (0 a 9)
Next i
de plus , la longueur de la chaine te donne si c'est des 10 aine (longueur=2)
des centaines (longueur=3)
les mille (longueur=4)
etc ......

Publié : lun. 13/avr./2009 9:51
par Atomo
Tu peux aussi utiliser l'opérateur modulo qui sert à faire des divisions à reste.
Code : Tout sélectionner
var = 7123
unite = var % 10
dizaine = (var % 100)/10
centaine = (var % 1000)/100
millier = (var % 10000)/1000
Debug unite
Debug dizaine
Debug centaine
Debug millier
Publié : lun. 13/avr./2009 11:38
par beauregard
Un grand merci pour ces joyeuses astuces !
