Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 09-12-2009 02:00:16
- mariam
- Membre
- Inscription : 09-12-2009
- Messages : 7
programmation
svp, je cherche a coder puis décoder un texte décrit par une chaine de caractèrez composée des caractéres minuscules correspondant aux 26 lettres de l'alphabet en utilisant les trois fonctions intcode,codelettre,et codeinverse.
Hors ligne
#2 09-12-2009 09:26:36
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 992
Re : programmation
Bonjour mariam,
Bienvenue sur Bibm@th...
Plusieurs questions :
1. Avec quel langage veux-tu faire ça ?
2. Que sont les fonctions intcode, codelettre et codeinverse ?
3. As-tu un petit exemple de codage "à la main " sur quelques mots et ce pour avoir un exemple de ce que tu cherches ?
Merci d'avance.
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#3 10-12-2009 23:35:02
- mariam
- Membre
- Inscription : 09-12-2009
- Messages : 7
Re : programmation
bonjour yoshi, et merci d' avoir répondue, ce que je cherche exactement c'est l'algorithme avec lequel on peut codé et décodé un texte écrit en minuscules et ceci en utilisant les trois fcts intCode,Codelettre et CodeInverse.
Hors ligne
#4 10-12-2009 23:56:58
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 992
Re : programmation
Bonsoir Mariam,
Il reste toujours au moins une question sans réponse :
Peux-tu donner la définition de tes fonctions intCode, Codelettre et CodeInverse ?
Si je ne sais pas ce que sont censées faire ces fonctions, je ne peix même pas commencer à chercher à t'aider...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#5 11-12-2009 00:16:26
- mariam
- Membre
- Inscription : 09-12-2009
- Messages : 7
Re : programmation
bsr
la fonction intCode est une fonction qui initialise la valeur de tablecode ( un tableau dans lequel le code sera mémorisé) , cette fct je l'ai résolu, le probléme c'est pour les 2 fcts codelettre qui pour une chaque lettre en donne la version codé; et la fct codeInverse qui retourne l'objet code invers du code courant,
merci
Hors ligne
#6 11-12-2009 16:32:57
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 992
Re : programmation
Bonjour,
Donc, je présume qu'il s'agit d'un codage par transposition de lettres, sans utiliser de clé. Je vois alors deux méthodes de calcul :
- Codage selon César avec un décalage fixe,
- Codage avec décalage calculé par fonction affine.
Puisque je connais pas le langage de programmation que tu vas utiliser, je vais écrire ça en "pseudo-code"... Selon les langages, on peut ou non raccourcir ce que je vais écrire.
1. Je pars du principe que le 1er indice de ton tableau vaut 0.
2. Je pars du principe que ta fonction de codage CodeLettre et ta fonction de décodage (CodeInverse) se voient passer en argument chaque caractère du massage clair ou codé..
3. Et donc que, chacun de ces caractères est extrait du message donné et passée en argument à tes deux fonctions, s'il est différent de l'espace.
4. j'ai donc supposé qu'un corps de programme principal appellera l'une ou l'auire de ces fonctions codage ou décodage si le caractère est différent de l'espace.
4. Je désigne par ASCII le code ASCII de chaque lettre. Par ex ASCII("a")=97, ASCII("z")=122
Boucle d'indice i pour i de 0 à 25
code=97+i+decalage
si code >122 alors
code = code -26
On range dans TableCode en position n° i le caractère qui a pour ASCII le nombre code
On retourne le Tableau TableCode
Fonction CodeLettre(lettre)
ordre = ASCII(lettre)-97 # ordre de la lettre dans l'alphabet en partant de 0
On retourne le nombre ordre
Fonction CodeInverse(carac,decalage):
ordre alphabétique=ASCII(carac)-97
ordre théorique de leettre codee dans TableCode = ordre alpha - decalage
ordre de la lettre claire = ordre théorique - decalage (modulo 26)
On retourne le nombre ordre
decalage= nombre à choisir entre 1 et 25
Depart=Phrase donnée
Arrivee=""
# Codage
Boucle sur chaque carac de la Phrase de départ
Si carac différent de l'espace alors
code = CodeLettre(carac) # Appel de la fonction
carac = caractère n° code dans TableCode
stockage du caractère dans la Phrase d'Arrivée
Ecriture de la Phrase d'Arrivée
#decodage
Arrivee = phrase obtenue ci-dessus
Depart = Phrase vide
Boucle sur chaque carac de la Phrase d'Arrivee
Si carac différent de l'espace alors
code = CodeLettre(carac)
ordre = CodeInverse(carac,decalage) # Appel de la fonction en passant les paramètres carac et decalage
stockage du caractère dans la Phrase de Départ cherchée
Ecriture résultat
Explications complémentaires
J'ai construit mon TableCode ainsi avec l'exemple :
Les indices :
0 1 2 3 4 5 6 7
représentent l'ordre alphabétique normal.
Ainsi les caractères de code ASCII 97 + indice seront respectivement :
a b c d e f g h...
ok ?
Maintenant aux positions d'indices
0 1 2 3 4 5 6 7...
je vais stocker en réalité :
j k l m n o p q...
Ici décalage choisi 9.
Si je veux coder le mot mariam
Je vais extraire successivement chaque carac : m, a, r, i, a , m
Si le carac n'est pas une espace j'appelle la fonction qui prend les codes ascii :
109, 97, 114, 105, 97, 109
Auxquels elle retire 97 pour trouver la position dans l'ordre alphabétique :
12, 0, 17, 8, 0, 12
Et maintenant je prends les lettres de TableCode qui occupent les positions ci-dessus :
v, j, a, r, j, v
Si je veux décoder vjarjv.
Je vais extraire successivement chaque carac : v, j, a, r, j , v
Si le carac n'est pas une espace j'appelle la fonction qui prend les codes ascii :
118, 106, 97, 114, 106, 118
Auxquels elle retire 97 pour trouver la position dans l'ordre alphabétique :
21, 9, 0, 17, 9, 21
Auquels elle retire le decalage pour retrouver l'ordre théorique du carac dans le tableau TableCode, auquels elle retire encore une fois le décalage pour retrouver l'ordre alphabétique (modulo 26) originel :
3, 17, 8, 25, 17, 3
Et maintenant je prends les lettres de TableCode qui occupent les positions ci-dessus :
m, a, r, i, a , m
Si ce n'est pas cela que tu veux, alors détaille un peu plus ton sujet...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#8 14-12-2009 13:40:34
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 992
Re : programmation
Salut,
Je reprécise bien que ce que j'ai écrit ne correspond à aucun langage de programmation : c'est ce qu'on appelle du "pseudo-code" avec des instructions qu'on écrit en français courant, de façon que, selon le langage employé, on puisse le retranscrire avec ses notations propres.
Personnellement, je programme en Python, et avec ce langage par exemple a modulo b s'écrit a % b, dans d'autres c'est a mod b, dans d'autres c'est mod(a,b)... A toi effectivement de t'adapter.
En Python, certaines lignes que j'ai écrites sont inutiles, par exemple pour rechercher l'indice de "m" dans TableCode, pas besoin de calculs la réponse est donnée par : TableCode.index("m")...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
Pages : 1