Débutant en java, coder des message.

Fermé
benjat97 Messages postés 74 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 juin 2015 - 8 oct. 2014 à 19:41
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 8 oct. 2014 à 22:53
Bonjour, j'ai un problème a réaliser en java, si quelqu'un pourrait m'aider et me donner des pistes ce serait vraiment apprécié! Merci d'avance :)

Voici le problème:

La Cryptologie


Jules César fut l'un des premiers à utiliser la cryptologie, soit l'étude des messages secrets. Il codait ses messages en décalant chaque lettre de trois lettres vers l'avant dans l'alphabet (en remplaçant les trois dernières lettres de l'alphabet par les trois premières). Par exemple, selon ce modèle, la lettre B est décalée à E et la lettre X à A. Il s'agit d'un exemple de codage, c'est-à-dire un processus qui permet de rendre un message secret.

Pour exprimer mathématiquement le processus de codage de César, on remplace d'abord chaque lettre par un entier compris entre 0 et 25, en fonction de sa position dans l'alphabet. Par exemple, on remplace A par 0, K par 10 et Z par 25. On peut représenter la méthode de codage de César par la fonction f, qui affecte à l'entier positif p, p<= 25, l'entier f(p) dans l'ensemble { 0, 1, 2,..., 25 } selon

f(p) = (p + 3) mod 26.

Dans la version codée du message, la lettre représentée par p est remplacée par la lettre désignée par (p + 3) mod 26.


Exemple :

Le message original : MEET YOU IN THE PARK
Sera codé : PHHW BRX LQ WKH SDUN



Codez un programme qui accepte en entrée un message qui affiche dans la fenêtre console le message codé.
A voir également:

1 réponse

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
8 oct. 2014 à 22:53
Bonjour,

En informatique, le codage utilisé pour coder les caractère est le code ACII (en java c'est UNICODE, mais ASCII suffit pour les 26 caractère de base de l'alphabet). C'est pas de 0 à 25 mais c'est de 0 à 127 (avant extension).

Pour manipuler ces caractères, il vous suffit de faire des conversions implicites de types, par exemple :

1. Pour convertir un entier en caractère :
int a = 65;
char c = (char) a;


2. Pour converti un caractère en entier :
char c = 'A';
int a = (int) c;


C'est aussi simple que ça.

Pour résoudre votre problème, vous avez besoins de deux choses :
1. Traiter une chîne de caractères lettre par lettre, pour cela essayez cette classe :
public class StringChars{
  public static void main(String args[]){
    String s = "Bonjour CCM!";
    for(int i = 0; i < s.length(); i++){
      char c = s.charAt(i);
      System.out.println("Le caractère situé à la position " + i + " est " + c);
    }
  }
}


2. Faire les opérations sur les lettres, essayez cette classe:
public class TestCharToInt{
  public static void main(String args[]){
    char c = 'A';
    int i = (int) c;
    System.out.println("L'entier est :" + i);
    i+=3;
    c = (char) i;
    System.out.println("Le caractère est : " + c);
  }
}


C'est un début, à vous de jouer.
Bon Courage.
2