programme qui code des phrases

Programmation d'applications complexes
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

programme qui code des phrases

Message par gadjet35 »

bonjour je viens de programmer un programme qui code des phrase
coder en : MCC (Mega Code Center) : :P :P

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 :?:
bonne journer à tous !!!
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

C'est bien Gadget.

En tout cas, ça marche :)
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message par gadjet35 »

merci pour les compliments !!!
et je n'ai copier de nul part une partie du code
bonne journer à tous !!!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :D

bravo pour ton prg ! :D
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message 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 :?:
bonne journer à tous !!!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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" :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :D


; 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

maitre we
Messages : 42
Inscription : mer. 23/nov./2005 23:50

Message 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 ...
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message 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 :D
Est beau ce qui plaît sans concept :)
Speedy Galerie
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :D

j'ai bien aimer chercher a le refaire :D ce fut bien plaisant :D
et en plus c'est un system tres efficace l'air de rien :D

Merci de m'avoir apris l'existence de ce petit system, j'ai pas perdu mon temps aujourd'hui :D
Dernière modification par Backup le dim. 27/nov./2005 11:28, modifié 1 fois.
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Typique de l'Oulipo ! :D

Il faudrait que le programme boucle :)

Cela pourrait donner des choses cocasses :D

Et il y aurait ainsi plusieurs niveaux de codages !
Est beau ce qui plaît sans concept :)
Speedy Galerie
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message 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 !!!
bonne journer à tous !!!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ?)
gadjet35
Messages : 190
Inscription : ven. 21/oct./2005 7:49
Localisation : Quelque part en france !

Message par gadjet35 »

ah oui j'ai tester et il y a effectivement un probleme excuse de ne pas t'avoir cru !!!
:oops: :oops: :roll:
bonne journer à tous !!!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

du moment que tu as testé pour moi ça va , c'etait pour rendre service :D
Répondre