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.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.
[Résolu] Base 9 sans nombre 0
Re: Base 9 sans nombre 0
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 !
Un homme doit être poli, mais il doit aussi être libre !
Re: Base 9 sans nombre 0
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.GallyHC a écrit :Toujours sans vraiment comprendre (le code avec le tout) :
@SPH : J'aime bien les codes courts, mais fonctionnelCode : 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
Cordialement,
GallyHC
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 !
Un homme doit être poli, mais il doit aussi être libre !
Re: Base 9 sans nombre 0
??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 ...

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

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

Re: Base 9 sans nombre 0
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.
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.
Ne me parles de malheur, c'est déjà assez compliqué comme ça !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 ....
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.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é ....
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 !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 ....
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 !
Un homme doit être poli, mais il doit aussi être libre !
Re: Base 9 sans nombre 0
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 ?
(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.
Re: Base 9 sans nombre 0
Pas fauxDobro 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 ....


!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
Re: Base 9 sans nombre 0
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.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 ?
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 !
Un homme doit être poli, mais il doit aussi être libre !
Re: Base 9 sans nombre 0
Bonjour,Micoute a écrit :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.GallyHC a écrit :Toujours sans vraiment comprendre (le code avec le tout) :
@SPH : J'aime bien les codes courts, mais fonctionnelCode : 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
Cordialement,
GallyHC
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)
Re: Base 9 sans nombre 0
Une suggestion : traite l'image par couleur primaire : le rouge (0 a 255), le vert et le bleu 

!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
Re: Base 9 sans nombre 0
@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.
Voyez-vous une logique qui se répète ?
@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)
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 !
Un homme doit être poli, mais il doit aussi être libre !
Re: Base 9 sans nombre 0
ta valeur a encoder en base 9 , elle peut aller de combiens a combiens ?
Re: Base 9 sans nombre 0
valeurs entières de 1 à 4294967295, c'est pour cette raison que j'ai supposé que c'était une image.Dobro a écrit :ta valeur a encoder en base 9 , elle peut aller de combien a combien ?
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 !
Un homme doit être poli, mais il doit aussi être libre !
Re: Base 9 sans nombre 0
Je ne vois pas le rapport entre un nombre et une image.Micoute a écrit :valeurs entières de 1 à 4294967295, c'est pour cette raison que j'ai supposé que c'était une image.Dobro a écrit :ta valeur a encoder en base 9 , elle peut aller de combien a combien ?
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

!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
Re: Base 9 sans nombre 0
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 ...
voici mon code :
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 ...

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
Re: Base 9 sans nombre 0
note que tu peux aussi utiliser ta procedure de codage
[reedit]
j'ai reedité mon dernier listing ....
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.