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 :

Convertir une chaine de caractères en matrice


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 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Par défaut Convertir une chaine de caractères en matrice
    Bonsoir ,
    Je suis en train de réaliser un programme de cryptographie permettant de chiffrer/déchiffrer des messages en utilisant plusieurs algorithmes de cryptage.
    Je suis bloquée maintenant au niveau de l'algorithme de Hill puisque la clé de cryptage est une matrice carrée d'ordre k
    Bref j'ai une interface où l'utilisateur saisit la clé et le message clair pour le chiffrer,le problème c'est que les valeurs récupérées depuis les zones de texte sont de type String donc ma clé, qui est en fait une matrice carrée de k² élément, sera saisie comme étant une chaîne de caractères qui contient k² entiers séparés par des espaces blancs (k-1 espaces)!!!!
    Je veux construire ma matrice
    J'ai fait une tentative mais ça n'a pas marché
    Heeeeelp plllllzzz

  2. #2
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Par défaut
    Bon voilà ma proposition

    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
     
    package traitement;
     
    public class Hill {
    	private int k;
    	private String matrice;
     
     
    	public Hill(int d,String m)
    	{
    		k=d; // La taille de la matrice
    		matrice=m;
    	}
     
    	public String chiffrer( String msg)
    	{  matrice=matrice+" ";
    	   int n=matrice.length();
    	   int cmpt=-1;
    	   String elt="";
    	   int[][] mat= new int[k][k];
    	   for(int i=0;i<n;i++)
    		{if(matrice.charAt(i)==' ')
    			{ 
                            System.out.println("chaine "+matrice);
    			cmpt++;
    			elt=matrice.substring(0,i);
    			System.out.println(elt);
    			mat[cmpt/k][cmpt%k]=Integer.parseInt(elt);
    			matrice=matrice.substring(i+1);
     
    			}
    		}
     
    		........
    ça me donne

    chaine 1 2 5 3
    1
    chaine 2 5 3
    2 5

    J'arrive à extraire le premier élément mais ça marche pas pour le deuxième!!!

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Par défaut
    Enfin j'ai trouvé l'erreur!!!
    à chaque fois je réduit la chaine donc les positions des caractères changent mais l'indice i est augmenté à chaque itération
    il faut plutot faire

    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
     
     
    		while(!matrice.equals(""))
    		{
    			for(int i=0;i<n;i++)
    			{if(matrice.charAt(i)==' ')
    				{System.out.println("chaine "+matrice);
    				cmpt++;
    				elt=matrice.substring(0,i);
    				System.out.println(elt);
    				mat[cmpt/k][cmpt%k]=Integer.parseInt(elt);
    				matrice=matrice.substring(i+1);
    				break;//on sort pour commencer la boucle à nouveau
     
    				}
    			}
     
    		}
    et ça marche très bien

    chaine 1 2 5 3
    1
    chaine 2 5 3
    2
    chaine 5 3
    5
    chaine 3
    3

    Merci en tout cas

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    Ou alors plus simple :
    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
     package traitement;
    public class Hill {
     
        privateint k;    
        private String matrice;
     
        public Hill(int d,String m)     {
                 k=d; // La taille de la matrice
                 matrice=m;
        } 
     
        public String chiffrer( String msg)     {   
            String [] tmp = matrice.split(" ");
            int[][] mat= new int[k][k];
            for(int i = 0; i < k; i++){
                for(int j = 0; j < k; j++){
                    mat[i][j] = Integer.parseInt(tmp[i * k + j]);
                }
            } 
        }
        ...

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Par défaut
    Citation Envoyé par atha2 Voir le message
    Ou alors plus simple :
    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
     package traitement;
    public class Hill {
     
        privateint k;    
        private String matrice;
     
        public Hill(int d,String m)     {
                 k=d; // La taille de la matrice
                 matrice=m;
        } 
     
        public String chiffrer( String msg)     {   
            String [] tmp = matrice.split(" ");
            int[][] mat= new int[k][k];
            for(int i = 0; i < k; i++){
                for(int j = 0; j < k; j++){
                    mat[i][j] = Integer.parseInt(tmp[i * k + j]);
                }
            } 
        }
        ...
    merciiii en fait j'ai découvert la fonction split après avoir terminé le programme

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/10/2007, 13h51
  2. Réponses: 5
    Dernier message: 16/05/2007, 13h43
  3. Convertir une chaine de caractère en tableau
    Par Mysti¢ dans le forum Général Python
    Réponses: 7
    Dernier message: 09/04/2007, 12h20
  4. Réponses: 6
    Dernier message: 14/06/2006, 15h27
  5. [XSL] Convertir une chaine de caractère
    Par bahet dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/04/2006, 10h24

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