"Saisissez votre // le message a coder est saisi ici message en espacant avec des points" ?->Str 1 Lbl 1 "Saisissez votre clef // La clef de chiffrement est saisie ici. elle comporte 10 caractères de chiffrement" ?->Str 2 StrLen(Str 6)->L // On purge le string qui recevra le message encodé Do StrShift(Str 6,1)->Str 6 Dsz L LpWile L!=0 ClrText StrLen(Str 2)->A A!=10=>Goto 1 // On teste la validité de la clef (10) 10->Dim List 1 // on crée la liste qui permettra l'encodage 1->D 1->B Do "ABCDEFGHIJKLMNOPQRSTUVWXYZ."->Str 3 // le Str 3 permettra de déterminer la position alphabétique d'une lettre StrLeft(Str 2,1)->Str 4 // Dans cette boucle, chaque lettre est prélevée et son emplacement (1-27 StrShift(Str 2,1)->Str 2 // puisque le point sert d'espace et doit etre encodé) est sauvegardé StrSrc(Str 3,Str 4)->C // dans une case de la liste 1 C->List 1[D] Isz D // ex: la clef "APOCALYPSE" se transforme en liste {1,16,15,3,1,12,25,16,19,5} Isz B LpWhile B<11 // La boucle se termine lorsque la clef est transformée en liste Str 3->Str 4 // on crée un doublon du "dictionnaire" des lettres StrLeft(Str 1,1)->Str 2 // la premiere lettre du message est prélevée, encodée (addition de sa position StrShift(Str 1,1)->Str 1 // alphabétique et de sa correspondance avec la clef = nouvelle position de lettre StrSrc(Str 3,Str 2)->E // ex: lettre C (3) en premiere position (1) avec la clef APOCALYPSE E+List 1[1]->G // 1+3=4 La lettre C devient D (4) G>=27=>G-27->G StrRotate(Str 4,G)->Str 4 StrLeft(Str 4,1)->Str 6 // ce premier circuit initialise le str 6 2->F Do // la boucle prend ensuite tous les caractères en charge a partir du 2e Str 3->Str 4 StrLeft(Str 1,1)->Str 2 StrShift(Str 1,1)->Str 1 StrSrc(Str 3,Str 2)->E E+List 1[F]->G G>=27=>G-27->G StrRotate(Str 4,G)->Str 4 StrLeft(Str 4,1)->Str 5 StrJoin(Str 6,Str 5)->Str 6 // a ce niveau chaque nouvelle lettre encodée (str 5) vient se rajouter au message codé F=10=>0->F // (str 6) F<10=>Isz F StrLen(Str 6)->H LpWhile H>0 // Le message est complètement encodé lorsque la longueur (StrLen) du message original // devient nulle ClrText Locate 1,1,Str 6 // On affiche le message encodé /* Lorsque le programme fonctionnera, j'y ajouterais un nettoyage de la clef et des traces en vidant * les str 1~6 apres l'affichage. Pour l'instant la Casio 35+ tourne 1 minute puis annonce une erreur mémoire avec le Str 6 * qui se remplit de caractères superflus et toujours identiques quels que soient les messages. Je pense que c'est la clef * qui genere ces caractères mais je n'arrive pas à débugger... MERCI DE VOTRE AIDE !!! */