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 ...... :D

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 ! :D