Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#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 991

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 991

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 991

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

Fonction InitCode(decalage)
    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

#7 14-12-2009 12:49:31

mariam
Membre
Inscription : 09-12-2009
Messages : 7

Re : programmation

bonjour,
merci mille fois youshi, c'est bien ca ce que je cherche, je doit effectuée quelle que modifications pour que ca soit compatible a mon énoncé, mais sinon c'est le méme principe,


merci , a +

Hors ligne

#8 14-12-2009 13:40:34

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 991

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

#9 16-12-2009 01:32:09

mariam
Membre
Inscription : 09-12-2009
Messages : 7

Re : programmation

bonsoir
oui serte , ce que je cherchai, c'est l'algorithmique,c'est a dire une simple analyse du probléme, par la suite je vait le traduire en c, mais mon ennoncé repose sur l'algo .
a+

Hors ligne

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
soixante cinq moins trente quatre
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums