Débutant en java, coder des message. [Fermé]

Signaler
Messages postés
74
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
11 juin 2015
-
tarek_dotzero
Messages postés
815
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
3 février 2020
-
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é.

1 réponse

Messages postés
815
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
3 février 2020
110
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.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86849 internautes nous ont dit merci ce mois-ci