[résolu] Traduire une fonction VB en PB
Re: Traduire une fonction VB en PB
100 donne t'il 90 ou bien 89 dans ta logique ?
!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: Traduire une fonction VB en PB
ben essaye avec le code
100 va donner 101
alors que 101 va donner 99 car 100 fini par un zero , et qu'il en veux pas ... le gars ..
... mais j'ai peut etre rien compris a ce qu'il veux ...
ps : bon c'est un couche tot , on ne le reverra pas avant demain
100 va donner 101
alors que 101 va donner 99 car 100 fini par un zero , et qu'il en veux pas ... le gars ..

... mais j'ai peut etre rien compris a ce qu'il veux ...

ps : bon c'est un couche tot , on ne le reverra pas avant demain

Re: Traduire une fonction VB en PB
prenons plutot 101.
Micoute : Il y a un zero en plein millieu ! Comment le geres tu ?
Micoute : Il y a un zero en plein millieu ! Comment le geres tu ?
!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: Traduire une fonction VB en PB
Bonjour à tous,
Je reprend mon programme de codage :
100 = 121100 donne t'il 90 ou bien 89 dans ta logique ?
Je reprend mon programme de codage :
Code : Tout sélectionner
Procedure.s DecimalToBase9(DecimalToBase9.q)
A = 0
Repeat
A + 1
B + 1
While FindString(Str(B), "0", 1) ; remplacer les 0 par des 1
B + 1
Wend
If A => DecimalToBase9.q
ProcedureReturn Str(A) + " = " + Str(B)
EndIf
ForEver
EndProcedure
For i = 1 To 100
Debug DecimalToBase9(i)
Next
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: Traduire une fonction VB en PB
Bon, et a quoi sert ta routine ? 

!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: Traduire une fonction VB en PB
Si je veux exclure le zéro, c'est parce qu'il va me servir de séparateur, ainsi 13213210346513210 peut mieux se découper si je sais où je dois le faire, mais si je mets un autre caractère, mon code va être cracké tout de suite, car 1321321|34651321| ça se remarque toute de suite.SPH a écrit :Bon, et a quoi sert ta routine ?
Dernière modification par Micoute le jeu. 30/mai/2013 9:13, 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: Traduire une fonction VB en PB
tout ça pour ça ? ......
et voila
si tu t'etais expliqué tout de suite , on aurai gagné du temps 

et voila
Code : Tout sélectionner
nombre.s="13213210346513210"
id= CountString(nombre.s,"0")
for i=1 to id
debug stringfield(nombre.s,i,"0")
next i
; EPB

Re: Traduire une fonction VB en PB
Merci Dobro,
on en est toujours au point de départ !
d'accord, mais comment je décode les nombres trouvés (base 9) en décimal (base 10)?Dobro a écrit :tout ça pour ça ? ......![]()
et voila
si tu t'étais expliqué tout de suite , on aurai gagné du tempsCode : Tout sélectionner
nombre.s="13213210346513210" id= CountString(nombre.s,"0") for i=1 to id debug stringfield(nombre.s,i,"0") next i ; EPB
on en est toujours au point de départ !
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: Traduire une fonction VB en PB
bon deja voici le meme code utilisant une listchainée , car on ne connais pas le nombre de segment
un segment etant une suite de chiffres entre les "0" ... d'apres tes explications
bon , maintenant tu parle de base 9 !!!
il te faut donc un convertisseur de base ...
j'avais posté il y a quelques temp un convertisseur de base
tu mets la base que tu veux , ça va le faire
un segment etant une suite de chiffres entre les "0" ... d'apres tes explications
Micoute a écrit :Si je veux exclure le zéro, c'est parce qu'il va me servir de séparateur, ainsi 13213210346513210 peut mieux se découper si je sais où je dois le faire, mais si je mets un autre caractère, mon code va être cracké tout de suite, car 1321321|34651321| ça se remarque toute de suite.
Code : Tout sélectionner
Declare decoupe(nombre.s)
calldebugger
nombre.s="132132103465132106548496851306506846860686468600"
debug "chaines de reference "+nombre.s
global newlist sequence.s()
decoupe(nombre.s) ; on decoupe nombre
; ****** affiche le contenu de la liste ******
ResetList(sequence.i())
While NextElement(sequence.i())
Debug val(sequence.i()) ; Affiche tous les éléments de la liste
Wend
procedure decoupe(nombre.s)
; Dobro
ClearList(sequence.s())
id= CountString(nombre.s,"0")
For i=1 to id
sortie.s=stringfield(nombre.s,i,"0")
if Sortie.s<>""
AddElement(sequence.s())
sequence.s()=sortie.s
Endif
Next i
Endprocedure
; EPB
bon , maintenant tu parle de base 9 !!!
il te faut donc un convertisseur de base ...
j'avais posté il y a quelques temp un convertisseur de base
tu mets la base que tu veux , ça va le faire

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)
nombre=194
Debug "la valeur 194 en Decimal"
base=8 ; en Octal
debug "en octal :"+Base(nombre,Base)
nombre=194
base=16 ; en Hexa
debug "en Hexadecimal :"+Base(nombre,Base)
nombre=194
base=2 ; en Binaire
debug "en Binaire:"+Base(nombre,Base)
nombre=194
base=20 ; en base 20 !!!!
debug "en base 20:"+Base(nombre,Base)
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
;
; EPB
Dernière modification par Backup le jeu. 30/mai/2013 10:16, modifié 3 fois.
Re: Traduire une fonction VB en PB
Merci beaucoup Dobro,
ton code s'approche très fortement de ce que je souhaite faire, mais c'est pas encore ça, car il laisse passer les zéros
ça me donne une idée, quand on à un multiple de la base, le résultat indique le nombre de fois que la base à été multipliée, ainsi 9 donne 10 (1 fois la base + 0 unités), 18 donne 20 (2 * base + 0) etc...
j'aimerais donc, chaque fois qu'on à un multiple de la base, ajouter 1 au nombre, ainsi 10 deviendrai 11, 20 = 21, 30 = 31, ainsi de suite, mais j'ai vérifié au delà de 89, il y a un problème parce 90 = 100 et là j'ai deux zéros, donc ma logique n'est pas bonne !
Sinon je pense à une base de données où je mettrais ma valeur décimale et ma valeur codée et il me suffirait de retrouver une des valeur pour retrouver l'autre, mais si je veux coder une image la palette de valeurs RGBA() irait de 0 à 4294967295, alors bonjour la taille de la BDD surtout s'il faut l'envoyer avec l'image codée !
ton code s'approche très fortement de ce que je souhaite faire, mais c'est pas encore ça, car il laisse passer les zéros
ça me donne une idée, quand on à un multiple de la base, le résultat indique le nombre de fois que la base à été multipliée, ainsi 9 donne 10 (1 fois la base + 0 unités), 18 donne 20 (2 * base + 0) etc...
j'aimerais donc, chaque fois qu'on à un multiple de la base, ajouter 1 au nombre, ainsi 10 deviendrai 11, 20 = 21, 30 = 31, ainsi de suite, mais j'ai vérifié au delà de 89, il y a un problème parce 90 = 100 et là j'ai deux zéros, donc ma logique n'est pas bonne !
Sinon je pense à une base de données où je mettrais ma valeur décimale et ma valeur codée et il me suffirait de retrouver une des valeur pour retrouver l'autre, mais si je veux coder une image la palette de valeurs RGBA() irait de 0 à 4294967295, alors bonjour la taille de la BDD surtout s'il faut l'envoyer avec l'image codée !
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: Traduire une fonction VB en PB
Ca ne te conviens pas, ca ?SPH a écrit :Code ultra optimisé :Code : Tout sélectionner
nombre=31 Debug nombre-(nombre/10)

!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: Traduire une fonction VB en PB
plus maintenant !!Micoute a écrit :car il laisse passer les zéros
reessaye mon code de decoupe

Re: Traduire une fonction VB en PB
Merci encore Dobro,
ton code de découpe est excellent, mais je reviens toujours à mon problème principal, c'est-à-dire le décodage des nombres, mon idée de BDD est bien sûr a proscrire, bien que ce soit la meilleure méthode de codage/décodage, car il serait mieux de trouver une méthode mathématique, après tout, les ordinateurs sont faits pour ça !
ton code de découpe est excellent, mais je reviens toujours à mon problème principal, c'est-à-dire le décodage des nombres, mon idée de BDD est bien sûr a proscrire, bien que ce soit la meilleure méthode de codage/décodage, car il serait mieux de trouver une méthode mathématique, après tout, les ordinateurs sont faits pour ça !
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: Traduire une fonction VB en PB
precise ce point precis , qu'entends tu exactement par "decodage"/"codage"Micoute a écrit :Merci encore Dobro,
ton code de découpe est excellent, mais je reviens toujours à mon problème principal, c'est-à-dire le décodage des nombres,
si le but est d'encoder les Segments (rappel un segment est un nombre obtenu apres decoupe (entre les "0")
c'est simple , l'encodage reversible le plus simple c'est XOR !
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Traduire une fonction VB en PB
@Dobro Micoute souhaite obtenir ceci :
Le code que tu donnes sur ce lien ne fonctionne pas. Ex : Debug nombre_encode(nombre,99) donne 10 alors que ça devrait Etre 1091 = 1, 2 = 2, 3 = 3, 4 = 4, 5 = 5, 6 = 6, 7 = 7, 8 = 8, 9 = 9, 10 = 11, 11 = 12, 12 = 13, 13 = 14, 14 = 15, 15 = 16, 16 = 17, 17 = 18, 18 = 19, 19 = 21, 20 = 22, 21 = 23, 22 = 24, 23 = 25, 24 = 26, 25 = 27, 26 = 28, 27 = 29, 28 = 31, etc...
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%