[Résolu] Base 9 sans nombre 0

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

SPH a écrit :Il y a une chose qui me tracasse : est ce que tu vas transformer un fichier octet par octet ? Si oui, tu n'as que 256 possibilités. Alors, tu peux faire un tableau de 256 transformations.
Bonjour SPH et merci pour ton aide,en fait, ce serait plutôt une image donc, 256^4 = 4 294 967 296 octets, ce qui nous fait un gros tableau de 4 Go.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

GallyHC a écrit :Toujours sans vraiment comprendre (le code avec le tout) :

Code : Tout sélectionner

Define.i i, j

For i=0 To 100
  If CountString(Str(i), "0") = 0
    j + 1    
    Debug ("(" + Str(j) + ") = " + Str(i) + " Retenue = " + Str((i + 1) / 10))
  EndIf
Next i
@SPH : J'aime bien les codes courts, mais fonctionnel :)

Cordialement,
GallyHC
Bonjour GallyHC et merci de ton intervention, mais je rappelle qu'on doit décoder des nombres n'utilisant que les chiffres 1 à 9 exclusivement pour les redécoder en décimal qui comporte 10 chiffres.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Base 9 sans nombre 0

Message par Backup »

Micoute a écrit :Bonjour SPH et merci pour ton aide,en fait, ce serait plutôt une image donc, 256^4 = 4 294 967 296 octets, ce qui nous fait un gros tableau de 4 Go.
??

si toutes mes images faisaient 4Go , je le saurait ... :roll:

on ne va pas pouvoir t'aider , pour une raison simple

tu nous téléporte dans ton probleme en nous imposant une Procedure , dont je cherche encore l'interet ...
en clair c'est le coup classique de résoudre un probleme dont l"énoncé est mal posé ... bref , c'est impossible

si tu nous donnait la Vraie raison qui t’amènes là , ce serait différent !

car si le but est d"encoder/décoder une image , on te donnerai des solutions bien différente n'incluant pas ta procédure aberrante !

si toutefois tu persistes a ré-"inventer" une procedure D'encodage , débrouilles toi pour faire la procedure qui decode... on est pas dans ta tete ..

la tu nous pose une procedure de decodage d'un truc qu'on sait meme pas comment tu l'a encodé , et on ne sait meme pas ce que tu encodes

de plus tu parles de "fausse" base 9 sans zero...... :roll: désolé mais le Zero fait parti de nos système
pourquoi ne pas nous demander d'omettre le chiffre 8 et le 4 tant qu'on y est ....

c'est comme vouloir ecrire une fable de De la Fontaine sans utiliser la lettre "a"

je ne vois aucune raison de ne pas utiliser le Zero ! et c'est surement là le debut de la raison du probleme mal posé ....

bref ! si tu arrives a trouver quelqu'un qui arrive deja a comprendre ou tu veux en venir ... tu aura de la chance
car , il me semble que toi-meme tu ne le sais pas trop .... :)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

Bonjour Dobro et merci de t'intéresser à mon problème insoluble, je ne dis pas que mon image fait 4 Go, mais que pour décoder toutes les solutions, il faudrait une base de données de 4 Go.

Quand à l'idée de base 9 sans 0, ce n'est pas de moi, mais c'est ce qu'on m'impose de faire et j'essaye d'utiliser tous les meilleurs cerveaux pour pouvoir m'aider dans ma tâche.
de plus tu parles de "fausse" base 9 sans zero...... désolé mais le Zero fait parti de nos système
pourquoi ne pas nous demander d'omettre le chiffre 8 et le 4 tant qu'on y est ....
Ne me parles de malheur, c'est déjà assez compliqué comme ça !
je ne vois aucune raison de ne pas utiliser le Zéro ! et c'est surement là le début de la raison du problème mal posé ....
Ce n'est pas moi qui ai inventer ce système à la noix, tout ce que je sais c'est que le zéro servira de séparateur.
bref ! si tu arrives a trouver quelqu'un qui arrive deja a comprendre ou tu veux en venir ... tu aura de la chance
car , il me semble que toi-meme tu ne le sais pas trop ....
Je crois bien que tu n'est pas loin de la vérité, on est tellement mieux avec notre système décimal et je voudrais bien savoir comment faisaient les romains qui ne connaissaient pas le zéro !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Base 9 sans nombre 0

Message par Backup »

encore une fois , met nous toutes les informations
(bien que je suis pas sur que de nous faire faire ton probleme soit bien morale s'il s'agit d'un exercice scolaire...)
tu vois on ne sait rien.. tu ne nous donne pas toutes les infos .... :)

on peut effectivement encoder un extrait xxx et le séparer par des Zero ce qui donnerai "xxx0xxx0xxxx0xxxxxxxx0xxxx0xxxxx0"
dans ce cas , l'utilisation d'un Stringfield() permet de recuperer les "xxx" qui sont séparé par des "0" ... je t'ai meme deja donné ma soluce dans l'autre topic

ensuite les "xxx" faut voir comment ils sont encodé pour pouvoir les decoder !

bien sur , l'encodage ne doit donc pas generer de "0" sinon Stringfield() aura du mal a séparer ...
(sauf si la séparation est réguliere tout les i caracteres ou bien que le premier "x" indique la longueur du segment )


est-ce plus clair ? :)
Dernière modification par Backup le mar. 18/juin/2013 11:14, modifié 2 fois.
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

Dobro a écrit :bref ! si tu arrives a trouver quelqu'un qui arrive deja a comprendre ou tu veux en venir ... tu aura de la chance
car , il me semble que toi-meme tu ne le sais pas trop .... :)
Pas faux :mrgreen: 8)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

Dobro a écrit :encore une fois , met nous toutes les informations
(bien que je suis pas sur que de nous faire faire ton probleme soit bien morale s'il s'agit d'un exercice scolaire...)
tu vois on ne sait rien.. tu ne nous donne pas toutes les infos .... :)

on peut effectivement encoder un extrait xxx et le séparer par des Zero ce qui donnerai "xxx0xxx0xxxx0xxxxxxxx0xxxx0xxxxx0"
dans ce cas , l'utilisation d'un Stringfield() permet de recuperer les "xxx" qui sont séparé par des "0" ... je t'ai meme deja donné ma soluce dans l'autre topic

ensuite les "xxx" faut voir comment ils sont encodé pour pouvoir les decoder !

bien sur , l'encodage ne doit donc pas generer de "0" sinon Stringfield() aura du mal a séparer ...
(sauf si la séparation est réguliere tout les i caracteres ou bien que le premier "x" indique la longueur du segment )


est-ce plus clair ? :)
Je ne peux pas mettre toutes les infos, mais ce n'est pas non plus un exercice scolaire, à mon age ça fait 50 ans que j'ai eut mon certificat d'études primaires.

Tout ce que j'ai comme info, c'est que la procédure de codage existe, je l'ai déjà postée dans un autre topic et que je dois composer la procédure inverse où les nombres à l'entrée de la procédure viendrons d'une autre procédure équipée d'un Stringfield() comme tu l'expliques si bien.

Avec la procédure que j'ai créée, tout va bien jusqu'à 89 et après il faut faire une série de filtres, pour l'instant je n'ai pas de problème jusqu'à 2179, mais quand je pense que dans une image, la plus grande valeur est $FFFFFFFF, soit 4294967295, alors je voudrais trouver une logique qui me permette d’incrémenter la valeur sortant de ma procédure quand cette valeur contient au moins un zéro, par exemple 99 + 1 = 111 et non pas 100, mais aussi 199 + 1 = 211, et ainsi de suite... ça marche aussi pour 1546979 + 1
Dernière modification par Micoute le mar. 18/juin/2013 11:57, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Base 9 sans nombre 0

Message par GallyHC »

Micoute a écrit :
GallyHC a écrit :Toujours sans vraiment comprendre (le code avec le tout) :

Code : Tout sélectionner

Define.i i, j

For i=0 To 100
  If CountString(Str(i), "0") = 0
    j + 1    
    Debug ("(" + Str(j) + ") = " + Str(i) + " Retenue = " + Str((i + 1) / 10))
  EndIf
Next i
@SPH : J'aime bien les codes courts, mais fonctionnel :)

Cordialement,
GallyHC
Bonjour GallyHC et merci de ton intervention, mais je rappelle qu'on doit décoder des nombres n'utilisant que les chiffres 1 à 9 exclusivement pour les redécoder en décimal qui comporte 10 chiffres.
Bonjour,

Heu je ne comprend pas la non plus, il n'y a pas de valeurs avec des 0 dans le code que je te présente (juste peu être la retenue).

Comme dit beaucoup de personne, le mieux est d'écrire en Français ton "algo" pour que l'on comprenne la finalité (A moins que tu ne désire pas le faire pour gardé le tout un peu secret :)).

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

Une suggestion : traite l'image par couleur primaire : le rouge (0 a 255), le vert et le bleu 8)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

@GallyHC, la retenue, je l'affiche pour savoir où j'en suis pour faire mes tests, car quand ça ne donne pas la réponse attendue, elle met sert pour ajouter un test, mais ProcedureReturn ne renverra que le nombre restitué !

@SPH, Ce n'est pas moi qui code les valeurs, j'ai dit que ça venait d'une image parce que je l'ai supposé, mais en fait, je n'ai aucune idée de ce que sont ces valeurs, je dois juste les restituer.

Et en plus, il faut savoir que le nombre entré est un nombre en base 9 sans nombre 0 et que je souhaiterais compter seulement j'usqu'à la valeur entrée. J'en suis là pour l'instant.

Code : Tout sélectionner

Procedure B9ToB10(Nombre.q)
   Retenue = 0
   i = 1
   While i < (Nombre / 10) * 9
      
   If Mod(i, 9) = 0 ; Nombre divisible par 9
      Retenue + 1
      NombreSortie + 1
   Else
      If Retenue <= 9
         NombreSortie = i + Retenue
      ElseIf Retenue >= 9 And Retenue < 19
         NombreSortie = i  + Retenue + 10
      ElseIf Retenue >= 19 And Retenue < 28
         NombreSortie = i  + Retenue  + 20
      ElseIf Retenue >= 28 And Retenue < 37
         NombreSortie = i + Retenue + 30
      ElseIf Retenue >= 37 And Retenue < 46
         NombreSortie = i + Retenue + 40
      ElseIf Retenue >= 46 And Retenue < 55
         NombreSortie = i + Retenue + 50
      ElseIf Retenue >= 55 And Retenue < 64
         NombreSortie = i + Retenue + 60
      ElseIf Retenue >= 64 And Retenue < 73
         NombreSortie = i + Retenue + 70
      ElseIf Retenue >= 73 And Retenue < 82
         NombreSortie = i + Retenue + 80
      ElseIf Retenue >= 82 And Retenue < 91
         NombreSortie = i + Retenue + 90
      ElseIf Retenue >= 91 And Retenue < 100 ; divisible par 9 et par 10
         NombreSortie = i + Retenue + 200
      ElseIf Retenue >= 100 And Retenue < 109
         NombreSortie = i + Retenue + 210
      ElseIf  Retenue >= 109 And Retenue < 118
         NombreSortie = i + Retenue + 220
      ElseIf Retenue >= 118 And Retenue < 127
         NombreSortie = i + Retenue + 230
      ElseIf Retenue >= 127 And Retenue < 136
         NombreSortie = i + Retenue + 240
      ElseIf Retenue >= 136 And Retenue < 145
         NombreSortie = i + Retenue + 250
      ElseIf Retenue >= 145 And Retenue < 154
         NombreSortie = i + Retenue + 260
      ElseIf Retenue >= 154 And Retenue < 163
         NombreSortie = i + Retenue + 270
      ElseIf Retenue >= 163 And Retenue < 172
         NombreSortie = i + Retenue + 280
      ElseIf Retenue >= 172 And Retenue < 181 ; divisible par 9 et par 10
         NombreSortie = i + Retenue + 390
      ElseIf Retenue >= 181 And Retenue < 190
         NombreSortie = i + Retenue + 400
      ElseIf Retenue => 190 And Retenue < 199
         NombreSortie = i + Retenue + 410
      ElseIf Retenue => 199 And Retenue < 208
         NombreSortie = i + Retenue + 420
      ElseIf Retenue => 208 And Retenue < 217
         NombreSortie = i + Retenue + 430
      ElseIf Retenue => 217 And Retenue < 226
         NombreSortie = i + Retenue + 440
      ElseIf Retenue => 226 And Retenue < 235
         NombreSortie = i + Retenue + 450
      ElseIf Retenue => 235 And Retenue < 244
         NombreSortie = i + Retenue + 460
      ElseIf Retenue => 244 And Retenue < 253
         NombreSortie = i + Retenue + 470
      ElseIf Retenue => 253 And Retenue < 262 ; divisible par 9 et par 10
         NombreSortie = i + Retenue + 580
      ElseIf Retenue => 262 And Retenue < 271
         NombreSortie = i + Retenue + 590
      EndIf   
   EndIf
      Debug "(" + Str(NombreSortie) + ") = " + Str(i) + " Retenue = " + Retenue
      i + 1
   Wend     
   ProcedureReturn i - 1
EndProcedure

Debug B9ToB10(2719)
Voyez-vous une logique qui se répète ?
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Base 9 sans nombre 0

Message par Backup »

ta valeur a encoder en base 9 , elle peut aller de combiens a combiens ?
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Base 9 sans nombre 0

Message par Micoute »

Dobro a écrit :ta valeur a encoder en base 9 , elle peut aller de combien a combien ?
valeurs entières de 1 à 4294967295, c'est pour cette raison que j'ai supposé que c'était une image.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Base 9 sans nombre 0

Message par SPH »

Micoute a écrit :
Dobro a écrit :ta valeur a encoder en base 9 , elle peut aller de combien a combien ?
valeurs entières de 1 à 4294967295, c'est pour cette raison que j'ai supposé que c'était une image.
Je ne vois pas le rapport entre un nombre et une image.

Si je convertis 4294967295 en base sans 0, ce sera un nombre plus grand et la, tu ne pourras pas le stocker dans un long mot (32 octets). Ton objectif est voué a l'echec 8)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Base 9 sans nombre 0

Message par Backup »

je crois etre arrivé a un resultat possible !

le probleme c'est la taille du précalcul ! 4Go c'est trop pour mon ordinateur !

principe
je precalcul tout les chiffres de 1 a 800 ( on peut mettre plus... mais 4Go c'est trop pour mon ordinateur ! )
c'est a dire que je convertie tout les chiffres en base 9 ....
et je pose le resultat dans une liste chainée .... et c'est la que ce pose la limite de Ram avec les 4Go... faudrai peut etre ecrire le precalcul dans un fichier a la place ...

une valeur qu'on donne pour le test est "encodé" en base 9
on affiche la conversion avec un debug ...

puis on va lire la liste chainée pour afficher le chiffre correspondant avant la conversion !
et c'est la qu'il faudrait faire un acces Disque pour lire un fichier au lieu d'une liste chainée trop petite...

ça reprends un peu le principe énoncé par G-rom avec son utilisation des Map ...
seulement meme les Map se casseront le nez sur les 4Go ....


je remarque qu passage que tu nous ajoutes des difficultés au fur et a mesure .... le coup des 4 go ... :roll:
voici mon code :

Code : Tout sélectionner

; l'algo est basé sur le principe suivant :
; pour le nombre 94 en base 2
; 94/2 = 0 reste 47
; 47/2 = 1 reste 23
; 23/2 = 1 reste 11
; 11/2 = 1 reste 5
; 5/2 = 1 reste 2
; 2/2 = 0 reste 1
; donc : nombre/base .... on recup le resultat qu'on affiche, puis on prends le reste de la division comme nouveau nombre !
; ce qui donne  "1011110" (en partant du dernier puis en remontant )

Declare.s Base(nombre,Base)
Declare  Precalcul(Max)
global newlist list.i()

Precalcul(10000) ; ici precalcul jusqu'a 100000 car avec 4go ça fait trop et ça plante

; ****** un exemple ************
nombre=800 ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ICI TU peux METTRE LE CHIFFRE QUE TU VEUX POUR TESTER
base=9 ; en Octal  ; PAS TOUCHER
resultat.s=Base(nombre,Base)
Debug "la valeur "+str(nombre)+" en base 9 ="+resultat.s

; inverse 
ResetList(List()) 
SelectElement(List(), nombre)
Debug "la valeur "+resultat.s+" en base inverse ="+str(List())






calldebugger


Procedure.s Base(nombre,Base)
	; By Dobro
	string_ref.s="0,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,S,T,U,V,W,X,Y,Z"
	while nombre>0
		reste=Mod(nombre,base)
		Resultat.s=Resultat.s+ StringField(string_ref.s,Reste+1,",")  ;;str(reste)
		nombre=nombre/base
	Wend
	ProcedureReturn ReverseString(Resultat.s)
Endprocedure


procedure Precalcul(Max)
	; By Dobro
	; on precalcul les résultats pour toute la 
	For i=0 to Max
		base=10 ; en Octal
		resultat.s=Base(i,Base)
		AddElement (list())
		list()=val(resultat.s)
	Next i
Endprocedure


; EPB
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Base 9 sans nombre 0

Message par Backup »

note que tu peux aussi utiliser ta procedure de codage

Code : Tout sélectionner

; l'algo est basé sur le principe suivant :
; pour le nombre 94 en base 2
; 94/2 = 0 reste 47
; 47/2 = 1 reste 23
; 23/2 = 1 reste 11
; 11/2 = 1 reste 5
; 5/2 = 1 reste 2
; 2/2 = 0 reste 1
; donc : nombre/base .... on recup le resultat qu'on affiche, puis on prends le reste de la division comme nouveau nombre !
; ce qui donne  "1011110" (en partant du dernier puis en remontant )

Declare.s Base(nombre,Base)
Declare.s  Coder(Nombre.q)
Declare  Precalcul(Max)
Declare  Recherche(nombre.s)

global newlist list.i()

Precalcul(10000) ; ici precalcul jusqu'a 100000 car avec 4go ça fait trop et ça plante

; ****** un exemple ************
nombre.q=800 ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ICI TU peux METTRE LE CHIFFRE QUE TU VEUX POUR TESTER
resultat.s=Coder(Nombre.q)

Debug "la valeur "+str(nombre)+" en base 9 ="+resultat.s

; inverse 
result=Recherche(resultat.s)
Debug "la valeur "+resultat.s+" en base inverse ="+str(result)






calldebugger


Procedure.s Base(nombre,Base)
	; By Dobro
	string_ref.s="0,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,S,T,U,V,W,X,Y,Z"
	while nombre>0
		reste=Mod(nombre,base)
		Resultat.s=Resultat.s+ StringField(string_ref.s,Reste+1,",")  ;;str(reste)
		nombre=nombre/base
	Wend
	ProcedureReturn ReverseString(Resultat.s)
Endprocedure
Procedure.s  Coder(Nombre.q)
	
	; À toutes les dizaines on est décalé d'une unité, ça donne une Retenue
	Retenue = (Nombre - 1) / 9
	
	; On ajoute la Retenue au résultat
	Resultat = Nombre + Retenue
	
	; Pour l'instant on n'a modifié que les unités ajoutés toutes les dizaines, il faut aussi ajouter
	; tous les blocs de 0 qui apparaissent 10 fois toutes les centaines, 100 fois tous les milliers, etc.
	
	; Sans oublier qu'à chaque fois qu'on ajoute une Retenue celle-ci décale le résultat, il faut donc
	; calculer aussi la Retenue de la Retenue !
	
	; 1 = unités, 10 = dizaines, 100 = centaines...
	Rang = 1
	
	; On s'arrête quand il n'y a plus de Retenue à ajouter
	While Retenue > 0
		
		; Nouvelle Retenue à ajouter
		Retenue = (10 * Rang) * ((Retenue - 1) / (9 * Rang))
		
		; Ajout de la Retenue
		Resultat + Retenue
		
		; Passage au Rang suivant
		Rang * 10
		
	Wend
	
	ProcedureReturn str(Resultat)
	
EndProcedure

procedure Precalcul(Max)
	; By Dobro
	; on precalcul les résultats pour toute la 
	For i=0 to Max
		base=10 ; en Octal
		resultat.s=Coder(i)
		AddElement (list())
		list()=val(resultat.s)
	Next i
Endprocedure

procedure Recherche(nombre.s)
	
	ResetList(list())
	While NextElement(list())
		if list()=val(nombre)
			ProcedureReturn ListIndex(List())
		Endif
		
	Wend
Endprocedure



; EPB


[reedit]

j'ai reedité mon dernier listing ....
Dernière modification par Backup le mar. 18/juin/2013 13:33, modifié 1 fois.
Répondre