IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Codage de polype


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 17
    Par défaut Codage de polype
    Bonjour ,
    Je suis débutante en JAVA. j'ai trouvé la solution pour le problème mais elle est très mal faite. j'aurais besoin de conseils afin de fournir un code plus performant.
    Voici, le sujet : le principe de base est de construire un tableau de 5 par 5. A chaque case est affectée une lettre de l'alphabet, excepté le W qui sera remplacé par un V dans le texte en clair. chaque ligne ou colonne est numérotée de 1 à 5. le texte chiffré devient un couple de chiffre construit à l'aide des abscisse et ordonnée du tableau pour une seule lettre.
    voilà le code que j'ai réalisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    public static void main(String [] args)
    	{
    		 char [][] tabLettres = {{'A','B','C','D','E'},{'F','G','H','I','J'},{'K','L','M','N','O'},{'P','Q','R','S','T'},{'U','V','X','Y','Z'}};
    		 String [][] tabChiffres = new String[5][5];
    		 String chaine = "";
    		 int compteur = 0;
    		 String texteClair = "JE PENSE DONC JE SUIS.";
    		 String texteCode="";
     
    		 //transformer les alphabets en nombre correspondant au nombre de la ligne et de au nombre de la colonne de l'alphabet
    		 for(int i=0;i<tabLettres.length;i++)
    		 {
    			 for(int j=0;j<tabLettres.length;j++)
    			 {
    				 int ligne = (i+1);
    				 int colonne = (j+1);
    				 chaine = chaine + Integer.toString(ligne) + Integer.toString(colonne);
    			 }
    		 }
     
    		 //System.out.println(chaine);
     
    		 //construction du tableau des chiffres
    			 for(int j=0;j<tabLettres.length ;j++)
    			 {
     
    						 tabChiffres[0][j] = chaine.substring(compteur, compteur +2 );
     
    						chaine = chaine.substring(compteur + 2,chaine.length() - 1);
     
    			 } 
    			 for(int j=0;j<tabLettres.length ;j++)
    			 {
     
    						 tabChiffres[1][j] = chaine.substring(compteur, compteur +2 );
     
    						chaine = chaine.substring(compteur + 2,chaine.length() - 1);
     
    			 } 
     
    			 for(int j=0;j<tabLettres.length ;j++)
    			 {
     
    						 tabChiffres[2][j] = chaine.substring(compteur, compteur +2 );
     
    						chaine = chaine.substring(compteur + 2,chaine.length() - 1);
     
    			 } 
     
    			 chaine = "41424344455152535455";
     
    			 for(int j=0;j<tabLettres.length ;j++)
    			 {
     
    						 tabChiffres[3][j] = chaine.substring(compteur, compteur +2 );
     
    						chaine = chaine.substring(compteur + 2,chaine.length() - 1);
     
    			 } 
     
    			 for(int j=0;j<tabLettres.length ;j++)
    			 {
     
    						 tabChiffres[4][0] = "51";
    						 tabChiffres[4][1] = "52";
    						 tabChiffres[4][2] = "53";
    						 tabChiffres[4][3] = "54";
    						 tabChiffres[4][4] = "55";
    			 } 
     
    			 //affichage du tableau des chiffres
     
    		 System.out.println();
    		 for(int i=0;i<tabLettres.length;i++)
    		 {
    			 for(int j=0;j<tabLettres.length;j++)
    			 {
    				 System.out.println("tabChiffres["+(i+1)+"]["+(j+1)+"] = "+tabChiffres[i][j]);
    			 }
    		 }
     
     
    		 for(int k=0;k<texteClair.length();k++)
    		 {
    			 for(int i=0;i<tabLettres.length;i++)
    			 {
    				 for(int j=0;j<tabLettres.length;j++)
    				 {
    					 if(texteClair.charAt(k) == 'W')
    					 {
    						 texteClair = texteClair.replace('W', 'V');
    					 }
    					 if(texteClair.charAt(k) == tabLettres[i][j])
    					 {
    						texteCode = texteCode + tabChiffres[i][j]; 
    					 }
    				 }
    			 }
    		 }
    		 System.out.println(texteCode);
    	}

    Merci de votre aide car je pense que pour trouver le tableau des chiffres il existe une meilleure solution mais je ne la trouve pas.
    Tout conseil est bienvenu.


    Batman90

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Bah en fait il sert à rien, le tableau de chiffres.

    Quand tu entres dans le if(texteClair.charAt(k) == tabLettres[i][j]), tu sais déjà que la colonne c'est i et la ligne c'est j. Donc les chiffres c'est i+1 et j+1.

    ... Mais ça reste pas très optimisé. Il vaudrait mieux faire deux tableaux de 25 éléments, le premier qui contient la colonne de chaque lettre, le second qui contient la ligne de chaque lettre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Tu pourrai utiliser l'objet Map. Celui-ci lie une clé à une valeur.

    Une implémentation pourrai ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package org.k.developpez.forum;
     
    import java.util.HashMap;
    import java.util.Map;
     
    public class Encoder {
    	public static void main(String[] args) {
    		// Contruction de la map à partir du tableau
    		String[][] tabLettres = { { "A", "B", "C", "D", "E" },
    				{ "F", "G", "H", "I", "J" }, { "K", "L", "M", "N", "O" },
    				{ "P", "Q", "R", "S", "T" }, { "U", "V", "X", "Y", "Z" } };
    		Map<String,String> myMap = new HashMap<String,String>();
    		for (int i = 0; i < tabLettres.length; i++) {
    			String[] lineLettre = tabLettres[i];
    			for (int j = 0; j < lineLettre.length; j++) {
    				String key = i+""+j;
    				myMap.put(key,lineLettre[j]);
    			}
    		}
    		//Inversion de la map pour facilité l'encodage.
    		// On pourrait très bien faire la contruction dans le bon sens directement
    		Map<String, String> myEncodingMap = new HashMap<>();
    		for(Map.Entry<String, String> entry : myMap.entrySet()){
    			myEncodingMap.put(entry.getValue(), entry.getKey());
    		}
     
    		String texteClair = "JE PENSE DONC JE SUIS.";
    		StringBuilder sb = new StringBuilder();
    		char[] letter =texteClair.toCharArray();
    		for (char c : letter) {
    			String encodedChar = myEncodingMap.get(String.valueOf(c));
    			if(encodedChar != null){
    				sb.append(encodedChar);
    			}else {
    				sb.append(c);
    			}
    		}
    		System.out.println(sb.toString());
    	}
    }
    Résultat :
    1404 3004233304 03242302 1404 33401333.
    A noté l'utilisation du StringBuilder pour évité la création des String intermédiaire en mémoire.

    Cordialement,
    Patrick Kolodziejczyk.

    Source :
    http://docs.oracle.com/javase/7/docs.../util/Map.html
    http://docs.oracle.com/javase/7/docs...ngBuilder.html
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 17
    Par défaut
    Je vous remercie pour la réponse. ça m'a été très utile.

    Rq : je voulais voter 10 / 10 pour la réponse de Patrick mais je ne sais pas comment faire.
    Aussi je remercie le modérateur (Thelvin ) car sa réponse est aussi pertinente. je vais sans doute la tester. et je vous enverrai le réponse dès que possible afin d'enrichir le forum même si je suis si débutante.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Merci.

    Citation Envoyé par Batman90 Voir le message
    Rq : je voulais voter 10 / 10 pour la réponse de Patrick mais je ne sais pas comment faire.
    On ne peut donner qu'un seul point par message. Même les messages qu'on apprécie plus que les autres. Mais bon, tout le monde peut donner un point, et donc les messages vraiment appréciés ont beaucoup de points.

    Et personnellement, je n'encouragerais pas les messages comme le sien. Il a juste fait ton travail à ta place, et je ne vois pas trop l'intérêt. Personne ici ne doutait qu'il est cap' de le faire, or le but ici, c'est de progresser ou faire progresser. Ce n'est pas de te donner un code à copier/coller sans le comprendre, qui te fera progresser.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Et personnellement, je n'encouragerais pas les messages comme le sien. Il a juste fait ton travail à ta place, et je ne vois pas trop l'intérêt.
    Là vous vous trompez (une fois n'est pas coutume)...

    Vous restez mon idole (vous et tchize_) mais apparemment vous personnellement vous avez oublié ce que c'est d'être étudiant, débutant, et devoir TOUT apprendre pour le prochain test, examen, whatever. Mon niveau d'incompétence me permet de rester proche des débutants et sachez que c'était le code filé par mes collègues qui m'a appris à lire, comprendre et écrire du code.
    Que celui qui n'a jamais lu le code d'autrui (et ne s'en est jamais servi) jette la première pierre!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de codage
    Par Hamdi_Maazoul dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 07/06/2007, 12h02
  2. [API] Codage d'un moniteur de messages debug
    Par Pierre Castelain dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 15/01/2004, 19h47
  3. [Interbase] [Trigger] Codage
    Par AnestheziE dans le forum InterBase
    Réponses: 9
    Dernier message: 06/11/2003, 14h51
  4. [Accents - XML] Problème de codage non supporté !!
    Par Smortex dans le forum Composants VCL
    Réponses: 6
    Dernier message: 24/11/2002, 11h00
  5. codage objet
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 22/08/2002, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo