( résolu)les chiffres d'un nombre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

( résolu)les chiffres d'un nombre

Message 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 :) ).
Dernière modification par beauregard le lun. 13/avr./2009 11:39, modifié 1 fois.
config de mon ordi: seven, directx11, Pentium(R) DualCore E5700, RadeonHD 4550 512MB, PureBasic 4.61 x86
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message 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 !
Dernière modification par Huitbit le lun. 13/avr./2009 12:39, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message 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
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Un grand merci pour ces joyeuses astuces ! :D
config de mon ordi: seven, directx11, Pentium(R) DualCore E5700, RadeonHD 4550 512MB, PureBasic 4.61 x86
Répondre