[Resolu] Gestion des DIM et décalage
Re: [Resolu] Gestion des DIM et décalage
par contre j'ai un soucis si on declale trop..
pas le temps de regarder
si ça depasse 13 ça risque de deconner ...
pas le temps de regarder
si ça depasse 13 ça risque de deconner ...
Re: [Resolu] Gestion des DIM et décalage
J'ai modifié et corrigé le code, j'ai aussi mis 2 modes possibles.
J'ai renommé la procédure en CesarIt() (cryptage cesar)
CesarIt(Decalage,phrase$,[mode])
mode = 1 : se base sur la Nieme lettre le l'alphabet
mode = 0 (ou rien) : incrémente le décalage de Decalage
Exemple en mode 0
CesarIt(1,phrase$)
"aaa" devient "bbb" car CesarIt décale de 1 par rapport à la 1ere lettre de l'alphabet
CesarIt(2,phrase$)
"aaa" devient "ccc"
Exemple en mode 1
CesarIt(1,phrase$,1)
"aaa" devient "aaa" car CesarIt se positionne sur la lettre 1
CesarIt(2,Phrase$,1)
"aaa" devient "bbb"
J'ai renommé la procédure en CesarIt() (cryptage cesar)
CesarIt(Decalage,phrase$,[mode])
mode = 1 : se base sur la Nieme lettre le l'alphabet
mode = 0 (ou rien) : incrémente le décalage de Decalage
Exemple en mode 0
CesarIt(1,phrase$)
"aaa" devient "bbb" car CesarIt décale de 1 par rapport à la 1ere lettre de l'alphabet
CesarIt(2,phrase$)
"aaa" devient "ccc"
Exemple en mode 1
CesarIt(1,phrase$,1)
"aaa" devient "aaa" car CesarIt se positionne sur la lettre 1
CesarIt(2,Phrase$,1)
"aaa" devient "bbb"
Code : Tout sélectionner
; procedure originale : Dobro
; Modifiée par Ar-S
Procedure.s CesarIt(pos,Phrase$,MODE=0)
; mode : 0 = decalage normal
; mode : 1 = decalage via position
If MODE = 1
pos-1
decalage = pos
Else
pos = pos
decalage = pos
EndIf
sortie$ = ""
ref$="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"
ref2$="abcdefghijklmnopqrstuvwxyz"
Phrase$=LCase(Phrase$)
If decalage = 0
decalage = 1
ElseIf decalage<1 Or decalage>26
ProcedureReturn "Erreur"
EndIf
For i=1 To Len(Phrase$)
extrait$=Mid(Phrase$,i,1)
Position=FindString(ref2$,extrait$,1)
If Position + pos > 26
Position = (Position + pos) - 26
Else
Position + pos
EndIf
extrait2$=StringField(ref$,Position,",")
sortie$+extrait2$
Next i
Debug Phrase$+" devient "+sortie$
ProcedureReturn sortie$
EndProcedure
Phrase$="attz"
Debug CesarIt(2,Phrase$,1) ; Decale à la 2 eme lettre => (B)
Debug CesarIt(2,Phrase$) ; Decale de 2 a partir de A => (C)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: [Resolu] Gestion des DIM et décalage
cool ! 
l'utilisation de stringfield permet de considerer une chaine comme un tableau
a une dimension , sans le cirque qui va avec...
j'aime vraiment cette fonction
bon certes , c'est surement moins rapide qu'avec des peeks
mais au moins on voit concretement ou on en est
rien qu'avec Stringfield, Purebasic est un grand langage !!

l'utilisation de stringfield permet de considerer une chaine comme un tableau
a une dimension , sans le cirque qui va avec...
j'aime vraiment cette fonction

bon certes , c'est surement moins rapide qu'avec des peeks
mais au moins on voit concretement ou on en est

rien qu'avec Stringfield, Purebasic est un grand langage !!

Re: [Resolu] Gestion des DIM et décalage
...............
Dernière modification par Backup le sam. 01/oct./2011 9:16, modifié 1 fois.
Re: [Resolu] Gestion des DIM et décalage
..............
Dernière modification par Backup le ven. 30/sept./2011 19:40, modifié 1 fois.
Re: [Resolu] Gestion des DIM et décalage
héhé oui comme quoi un petit rafraichissement ça fait du bien 
CesarIt(13,Phrase$) = wrfhvfharpneebggranvar
Phrase$ = ???

CesarIt(13,Phrase$) = wrfhvfharpneebggranvar

Phrase$ = ???

Dernière modification par Ar-S le ven. 02/sept./2011 16:38, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: [Resolu] Gestion des DIM et décalage
Bonjour Ar-s
J'ai pas tout lu, mais ne serai-ce pas plus simple de faire comme ça ?
Bien sûr il faut que le texte de base soit en majuscule
Mais on peut aussi travailler avec des minuscules en changeant la valeur ASCII.
J'ai pas tout lu, mais ne serai-ce pas plus simple de faire comme ça ?
Code : Tout sélectionner
Global crypto$, Phrase$
Phrase$="ATTZ"
Procedure.s Cesar(Texte$,Decalage)
crypto$=""
For n=1 To Len(Phrase$)
ValLettre=Asc(Mid(Phrase$,n,1))
Res=ValLettre+Decalage
If Res>90
Res=Res-26
EndIf
crypto$=crypto$+Chr(Res)
Next n
ProcedureReturn crypto$
EndProcedure
Debug Cesar(Phrase$,1)
Debug Cesar(Phrase$,7)

Mais on peut aussi travailler avec des minuscules en changeant la valeur ASCII.
Re: [Resolu] Gestion des DIM et décalage
merci Good007,
C'était mon orientation première de passer par les Asc() et Chr()
ça marche aussi et c'est une méthode de plus (j'aime la prog pour ça)
pour ton histoire de Majuscule, c'est plus simple de les imposer avec un phrase$=Ucase(phrase$), ça évite d'avoir à changer les Valeurs Ascii
C'était mon orientation première de passer par les Asc() et Chr()
ça marche aussi et c'est une méthode de plus (j'aime la prog pour ça)
pour ton histoire de Majuscule, c'est plus simple de les imposer avec un phrase$=Ucase(phrase$), ça évite d'avoir à changer les Valeurs Ascii
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: [Resolu] Gestion des DIM et décalage
Pas de problème, et effectivement il vaut mieux forcer le texte en majuscule.
Pour améliorer le système il faudrait rajouter une procédure de formatage du texte qui enlève les lettres accentuées et les espaces ainsi que les signes de ponctuation.
Ça évite pas mal de problèmes quand on tape une phrase sans faire trop attention.
Bonne continuation.
Pour améliorer le système il faudrait rajouter une procédure de formatage du texte qui enlève les lettres accentuées et les espaces ainsi que les signes de ponctuation.
Ça évite pas mal de problèmes quand on tape une phrase sans faire trop attention.
Bonne continuation.
Re: [Resolu] Gestion des DIM et décalage
Exacte, pour les accents j'y viendrait, pour les espaces c'est fait.
Voilà ma procédure modifiée avec possibilité de décrypter une phrase en utilisant la valeur négative.
Je reprends l'histoire du ROT13
Voilà ma procédure modifiée avec possibilité de décrypter une phrase en utilisant la valeur négative.
Je reprends l'histoire du ROT13
Code : Tout sélectionner
; procedure CesarIt() par Ar-S / 02/09/2011
; v0.6 Ajout de la fonction décodage si on entre un chiffre négatif
; v0.5 Correctifs mineurs
; v0.4 Ajout du mode 1
;
; procedure originale : Dobro
Global.b cesar
;{- Proce CESARIT
Procedure.s CesarIt(pos,Phrase$,MODE=0)
; mode : 0 = decalage normal
; mode : 1 = decalage via position
Shared ref2$
sortie$ = ""
ref$="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"
ref2$="abcdefghijklmnopqrstuvwxyz"
Phrase$=LCase(Phrase$)
Phrase$=RemoveString(Phrase$," ")
If pos < -26
ProcedureReturn "Erreur"
ElseIf pos < 0 And pos > -27
MODE = 0 ;(on force le MODE 0)
pos = pos-(pos*2)
; La feinte :)
ref$=ReverseString(ref$)
ref2$=ReverseString(ref2$)
Else
If MODE = 1
pos-1
Else
pos = pos
EndIf
decalage = pos
If decalage = 0
decalage = 1
ElseIf decalage<1 Or decalage>26
ProcedureReturn "Erreur"
EndIf
EndIf
For i=1 To Len(Phrase$)
extrait$=Mid(Phrase$,i,1)
Position=FindString(ref2$,extrait$,1)
If Position + pos > 26
Position = (Position + pos) - 26
Else
Position + pos
EndIf
extrait2$=StringField(ref$,Position,",")
sortie$+extrait2$
Next i
Debug Phrase$+" devient "+sortie$
ProcedureReturn sortie$
EndProcedure
;}-
cesar = 13
; Decalage de la phrase de 13 (ROT13)
Phrase$="je suis une carrotte naine"
Debug CesarIt(cesar,Phrase$) ; devient => "wrfhvfharpneebggranvar"
; Décodage du ROT13
Phrase$="wrfhvfharpneebggranvar"
CesarIt(-13,Phrase$)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels