Page 1 sur 1
programme qui code des phrases
Publié : sam. 26/nov./2005 8:27
par gadjet35
bonjour je viens de programmer un programme qui code des phrase
coder en : MCC (Mega Code Center) :
Code : Tout sélectionner
NewList code.s()
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#String_0
#Frame3D_0
#Frame3D_1
#Button_0
#Button_1
#String_1
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 327, 273, 359, 152, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered , "Codeur MCC V4.7")
If CreateGadgetList(WindowID())
StringGadget(#String_0, 20, 30, 210, 20, "")
Frame3DGadget(#Frame3D_0, 10, 10, 330, 60, "CODER")
Frame3DGadget(#Frame3D_1, 10, 80, 330, 60, "DECODER")
ButtonGadget(#Button_0, 260, 30, 60, 20, "Coder")
ButtonGadget(#Button_1, 260, 100, 60, 20, "Decoder")
StringGadget(#String_1, 20, 100, 210, 20, "")
EndIf
EndIf
EndProcedure
Procedure coder(text$)
Repeat
lettre$ = Mid(text$,Len(text$)-a,1)
b$ = Mid(text$,1+a,1) + lettre$
mot$ = mot$ + b$
a = a + 1
Until a = Len(text$)
SetGadgetText(#String_1,mot$)
EndProcedure
Procedure decoder(text$)
b = 1
mot$ = Left(text$,Len(text$)/2)
Repeat
AddElement(code.s())
code.s() = ""
a = a + 1
Until a = Len(mot$)
Repeat
packet$ = Mid(mot$,b,2)
premier$ = Mid(packet$,1,1)
deuxieme$ = Mid(packet$,2,1)
SelectElement(code.s(),0+element)
code.s() = premier$
SelectElement(code.s(),Len(mot$)-(element+1))
code.s() = deuxieme$
element = element + 1
b = b + 2
Until element = Len(mot$)/2
Repeat
SelectElement(code.s(),c)
nouveau_text$ = nouveau_text$ + code.s()
c = c + 1
Until c = Len(mot$)
SetGadgetText(#String_0,nouveau_text$)
EndProcedure
open_window_0()
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #button_0
text$ = GetGadgetText(#String_0)
coder(text$)
Case #button_1
text$ = GetGadgetText(#String_1)
decoder(text$)
EndSelect
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
comment le trouvez-vous

Publié : sam. 26/nov./2005 9:04
par Chris
C'est bien Gadget.
En tout cas, ça marche

Publié : sam. 26/nov./2005 9:19
par gadjet35
merci pour les compliments !!!
et je n'ai copier de nul part une partie du code
Publié : sam. 26/nov./2005 11:18
par Backup
et je n'ai copier de nul part une partie du code
rien ne t'empeche d'utiliser le code de quelqu'un , simplement un petit
"greeting" dans le code , pour le signaler , c'est la moindre des politesses !
bravo pour ton prg !

Publié : sam. 26/nov./2005 12:15
par gadjet35
si vous voulez je l'ai en version console :
Code : Tout sélectionner
NewList code.s()
Global mot$
Global nouveau_text$
Procedure coder(text$)
Repeat
lettre$ = Mid(text$,Len(text$)-a,1)
b$ = Mid(text$,1+a,1) + lettre$
mot$ = mot$ + b$
a = a + 1
Until a = Len(text$)
EndProcedure
Procedure decoder(text$)
b = 1
mot$ = Left(text$,Len(text$)/2)
Repeat
AddElement(code.s())
code.s() = ""
a = a + 1
Until a = Len(mot$)
Repeat
packet$ = Mid(mot$,b,2)
premier$ = Mid(packet$,1,1)
deuxieme$ = Mid(packet$,2,1)
SelectElement(code.s(),0+element)
code.s() = premier$
SelectElement(code.s(),Len(mot$)-(element+1))
code.s() = deuxieme$
element = element + 1
b = b + 2
Until element = Len(mot$)/2
Repeat
SelectElement(code.s(),c)
nouveau_text$ = nouveau_text$ + code.s()
c = c + 1
Until c = Len(mot$)
EndProcedure
OpenConsole()
ConsoleTitle("Codeur MCC")
debut:
PrintN("pour decoder un mot taper: [decoder]")
PrintN("pour coder un mot taper: [coder]")
code$ = Input()
If code$ = "[decoder]"
PrintN("")
PrintN("entrer le mot a decoder et appuyer sur entrer")
ConsoleColor(11,0)
PrintN("")
text$ = Input()
ConsoleColor(7,0)
decoder(text$)
PrintN("")
PrintN("reponse...")
PrintN("votre mot est decoder !")
PrintN("")
ConsoleColor(12,0)
PrintN(nouveau_text$)
ConsoleColor(7,0)
PrintN("")
PrintN("appuyer sur entrer pour recommencer")
Input()
ClearConsole()
Goto debut:
EndIf
If code$ = "[coder]"
PrintN("")
PrintN("entrer le mot a coder et appuyer sur entrer")
ConsoleColor(11,0)
PrintN("")
text$ = Input()
PrintN("")
ConsoleColor(7,0)
coder(text$)
PrintN("")
PrintN("reponse...")
PrintN("votre mot est coder !")
PrintN("")
ConsoleColor(12,0)
PrintN(mot$)
ConsoleColor(7,0)
PrintN("")
PrintN("appuyer sur entrer pour recommencer")
Input()
ClearConsole()
Goto debut:
EndIf
ClearConsole()
Goto debut:
et lui il est bien

Publié : sam. 26/nov./2005 13:04
par Backup
il bug ton encodeur ! (premier listing) j'ai pas testé le deuxieme:D
entre le mot "teste" <--- oui je sais il y a une faute d'orthographe c'est pour l'exemple
ton prg encode "teetssteet"
tu le redecode et ça donne "tete" il a mangé le "s"

Publié : sam. 26/nov./2005 15:16
par Backup
tiens cette version fonctionne bien !
et elle n'utilise que les lettres du mots sans en ajouter !
t'avais oublié de tenir compte des mots avec une longueur paire ou impaire , le traitement ne peut pas etre le meme dans les 2 cas !
; Code de Gadjet35
; Modifié et Coloré par Dobro et the Colorer
NewList code.s()
;- Window Constants ;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#String_0
#Frame3D_0
#Frame3D_1
#Button_0
#Button_1
#String_1
EndEnumeration
Procedure Open_Window_0()
If OpenWindow ( #Window_0 , 327, 273, 359, 152, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered , "Codeur MCC V4.7" )
If CreateGadgetList ( WindowID ())
StringGadget ( #String_0 , 20, 30, 210, 20, "" )
Frame3DGadget ( #Frame3D_0 , 10, 10, 330, 60, "CODER" )
Frame3DGadget ( #Frame3D_1 , 10, 80, 330, 60, "DECODER" )
ButtonGadget ( #Button_0 , 260, 30, 60, 20, "Coder" )
ButtonGadget ( #Button_1 , 260, 100, 60, 20, "Decoder" )
StringGadget ( #String_1 , 20, 100, 210, 20, "" )
EndIf
EndIf
EndProcedure
Procedure coder(text$)
long= Len (text$)
If long%2=0 ; c'est paire
long=long/2
EndIf
For t=1 To long
point_fin= Len (text$)-t+1
point_deb=t
fin$ = Mid (text$,point_fin,1)
If point_deb<>point_fin
deb$ = Mid (text$,point_deb,1)
Else
deb$ = ""
mot$ = mot$ + deb$+fin$
Break 1
EndIf
mot$ = mot$ + deb$+fin$
Next t
SetGadgetText ( #String_1 ,mot$)
EndProcedure
Procedure decoder(text$)
long= Len (text$)
For t=1 To long Step 2
un$= Mid (text$,t,1)
deu$= Mid (text$,t+1,1)
mot1$=mot1$+un$
mot2$=mot2$+deu$
Next t
If long%2>0 ; c'est impaire
For t= Len (mot2$) To 1 Step-1
deu$= deu$+ Mid (mot2$,t,1)
Next t
Else
For t= Len (mot2$)-1 To 1 Step-1
deu$= deu$+ Mid (mot2$,t,1)
Next t
EndIf
mot_final$= mot1$+deu$
SetGadgetText ( #String_0 ,mot_final$)
EndProcedure
Open_Window_0()
Repeat
Select WaitWindowEvent ()
Case #PB_EventGadget
Select EventGadgetID ()
Case #Button_0
text$ = GetGadgetText ( #String_0 )
coder(text$)
Case #Button_1
text$ = GetGadgetText ( #String_1 )
decoder(text$)
EndSelect
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
Publié : sam. 26/nov./2005 20:33
par maitre we
j'ai rajouté que quand on apui sur "entrée" ; sa revienne au meme que d'apuyé sur "coder"
Code : Tout sélectionner
; Code de Gadjet35
; Modifié et Coloré par Dobro et the Colorer
;remodifié par Maitre we (sans couleur(s))
NewList code.s()
;- Window Constants ;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#String_0
#Frame3D_0
#Frame3D_1
#Button_0
#Button_1
#String_1
EndEnumeration
Procedure Open_Window_0()
If OpenWindow ( #Window_0 , 327, 273, 359, 152, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered , "Codeur MCC V4.7" )
If CreateGadgetList ( WindowID ())
StringGadget ( #String_0 , 20, 30, 210, 20, "" )
Frame3DGadget ( #Frame3D_0 , 10, 10, 330, 60, "CODER" )
Frame3DGadget ( #Frame3D_1 , 10, 80, 330, 60, "DECODER" )
ButtonGadget ( #Button_0 , 260, 30, 60, 20, "Coder" )
ButtonGadget ( #Button_1 , 260, 100, 60, 20, "Decoder" )
StringGadget ( #String_1 , 20, 100, 210, 20, "" )
EndIf
EndIf
AddKeyboardShortcut(0, #PB_Shortcut_Return,#Button_0)
EndProcedure
Procedure coder(text$)
long= Len (text$)
If long%2=0 ; c'est paire
long=long/2
EndIf
For t=1 To long
point_fin= Len (text$)-t+1
point_deb=t
fin$ = Mid (text$,point_fin,1)
If point_deb<>point_fin
deb$ = Mid (text$,point_deb,1)
Else
deb$ = ""
mot$ = mot$ + deb$+fin$
Break 1
EndIf
mot$ = mot$ + deb$+fin$
Next t
SetGadgetText ( #String_1 ,mot$)
EndProcedure
Procedure decoder(text$)
long= Len (text$)
For t=1 To long Step 2
un$= Mid (text$,t,1)
deu$= Mid (text$,t+1,1)
mot1$=mot1$+un$
mot2$=mot2$+deu$
Next t
If long%2>0 ; c'est impaire
For t= Len (mot2$) To 1 Step-1
deu$= deu$+ Mid (mot2$,t,1)
Next t
Else
For t= Len (mot2$)-1 To 1 Step-1
deu$= deu$+ Mid (mot2$,t,1)
Next t
EndIf
mot_final$= mot1$+deu$
SetGadgetText ( #String_0 ,mot_final$)
EndProcedure
Open_Window_0()
Repeat
Select WaitWindowEvent ()
Case #PB_EventGadget
Select EventGadgetID ()
Case #Button_0
text$ = GetGadgetText ( #String_0 )
coder(text$)
Case #Button_1
text$ = GetGadgetText ( #String_1 )
decoder(text$)
EndSelect
Case #PB_EventCloseWindow
quit = 1
EndSelect
Select WaitWindowEvent ()
Case #PB_EventMenu
Select EventMenuID ()
Case #Button_0
text$ = GetGadgetText ( #String_0 )
coder(text$)
EndSelect
Case #PB_EventCloseWindow
quit = 1
EndSelect
Until quit = 1
edit :
défoi (chez moi) , il faut appuyé 2/3fois sur "entrée" pour que sa marche ...
Publié : sam. 26/nov./2005 21:52
par Frenchy Pilou
Il est bien aussi de mettre au début du listing quelques commentaires qui décrivent de façon rapide l'objet du programme

Car dans 10 ans, le jour où tu vas le relire, et où tu n'auras plus le programme pour le faire tourner, tu seras bien content en un clin d'oeil de savoir que c'est dans tel programme que tu avais pondu cette super astuce dont tu aurais besoin !
Il faut être prévoyant

Publié : sam. 26/nov./2005 23:26
par Backup
le principe d'encodage est interressant , je ne le connaissais pas
consiste a prendre le premier caractere d'un mot et de le marier avec le dernier caractere , puis le 2eme avec l'avant dernier ect ..
pour 1,2,3,4,5
cela donne
1,5,2,4,3
pour le décodage c'est assez simple , il suffit dans un premier temps , de prendre une lettre sur 2
pour notre exemple
1,2,3
puis pour un deuxieme temps
se mettre sur le deuxieme caractere et faire pareil
ce qui donne avec notre exemple
5,4
on retourne le resultat du deuxieme traitement
cela deviens
4,5
on concatene les deux parties ensemble
1,2,3+4,5 == 1,2,3,4,5 et voila !
j'ai bien aimer chercher a le refaire

ce fut bien plaisant

et en plus c'est un system tres efficace l'air de rien
Merci de m'avoir apris l'existence de ce petit system, j'ai pas perdu mon temps aujourd'hui

Publié : dim. 27/nov./2005 2:01
par Frenchy Pilou
Typique de l'Oulipo !
Il faudrait que le programme boucle
Cela pourrait donner des choses cocasses
Et il y aurait ainsi plusieurs niveaux de codages !
Publié : dim. 27/nov./2005 7:49
par gadjet35
le system de dobro est bien mais bon le mien n'est pas mal non plus il fait le chemin à l'endroit et apres il repart à l'envers et pour les mots inpaires ce n'est pas grave sa marche quand même merci pour vos code !!!
Publié : dim. 27/nov./2005 11:25
par Backup
pour les mots inpaires ce n'est pas grave sa marche quand même
non monsieur !!
reprends ton premier listing posté tout en haut
et entre le mot
tests
ton listing encode
tsetsstest
et redecode en donnant :
tets
<-- c'est FAUX !!!
donc ton listing ne marche pas contrairement a ce que tu affirme !
en plus tout le monde peut facilement le verifier (t'es pas du genre tétu toi ?)
Publié : dim. 27/nov./2005 15:33
par gadjet35
Publié : dim. 27/nov./2005 18:16
par Backup
du moment que tu as testé pour moi ça va , c'etait pour rendre service
