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 :

Code générateur de matrice


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut Code générateur de matrice
    Salut la grande famille dvp,
    j'ai un soucis nécéssitant votre aide que voici:
    je voudrais creer une fonction qui puisse me générer une matrice formée de 0 et de 1 ceux à partir d'une chaine formée de n'importe quelle type de caractère :
    Voici ce que j'ai essayé avec uniquement les lettres:
    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
     
    public static char[][] CALCMAT(String maChaine) {
    int nbRow = maChaine.length();
    int nbCol = 8;
    char[][] mat = new char[nbRow][nbCol];
    String s;
    char c;
    for (int i = 0; i < nbRow - 1; i++) { // traiter chaque caractÚre de la
    // chaine maChaine
    c = maChaine.trim().charAt(i);
    // if(c==' ')
    s = toBinaryRow(c);
    // else continue;
    mat[i] = s.toCharArray();
    }
    StringBuilder binary;
    for (int j = 0; j < nbCol; j++) { // traiter chaque colonne de mat
    binary =new StringBuilder();
    for (int i = 0; i < nbRow-1; i++)
    {
    binary.append(mat[i][j]); 
    // colonne traite
    String str = ""+ binary;
     
    mat[nbRow - 1][j] = toBinaryCol(str);
    }
    }
     
    return mat;
    }
    Avec les sous fonctions suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //return 0 ou 1 suivant que le nombre de 1 suivat une colonne 
    public static char toBinaryCol(String s) {
     
    		int a = Integer.parseInt(s, 2); // convertir la chaine de binaire en
    										// entier
    		int n = Integer.bitCount(a); // compter le nombre de 1 contenu dans le
    										// binaire de l'entier
     
    		if (n % 2 == 0)
    			return '0';
    		else
    			return '1';
    	}
    Et celle ci qui ajoute un 0 ou 1 selon le nombre de 1 a la chaine de binaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    	public static String toBinaryRow(char c) {
     
    		String s = Integer.toBinaryString(c);
    		int n = Integer.bitCount(c);
     
    		if (n % 2 == 0)
    			return s + "0";
    		else
    			return s + "1";
    	}
    Tout en esperant été clair dans mes propos.
    Merci d'avance pour tout

  2. #2
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    Bonsoir

    j'avais suivi une de tes discussion
    j'ai l'impression que c'est le même code

    si je comprends bien cette fois tu veux traiter une phrase composée de n'importe quel caractère. c'est bien ça ?
    ce code te provoque quelle erreur lorsque tu essayes ?

    PS: navrée pour l'UDP mais je n'avais pas la réponse

  3. #3
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Laine Voir le message
    Bonsoir

    si je comprends bien cette fois tu veux traiter une phrase composée de n'importe quel caractère. c'est bien ça ?

    Salut merci de votre reponse
    ce code ne cause aucun problème,juste je voudrais étendre l'action de ce code
    pour un certain grand nombre de caractère(lettre ,chiffre,caractères spéciaux)
    Merci encore

  4. #4
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    Bonsoir

    avec 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    public class Main {
     
    	public static char[][] CALCMAT(String maChaine) {
     
    		int nbRow = maChaine.length()+1;
    		int nbCol = 8;
    		char[][] mat = new char[nbRow][nbCol];
    		String s;
    		char c;
    		for (int i = 0; i < nbRow - 1; i++) {
    			c = maChaine.trim().charAt(i);
    			s = toBinaryRow(c);
    			mat[i] = s.toCharArray();
    			System.out.print(c+": ");
    			System.out.println(s);
    		}
     
    		StringBuilder binary;
    		for (int j = 0; j < nbCol; j++) {
    			binary =new StringBuilder();
    			for (int i = 0; i < nbRow-1; i++) {
    				binary.append(mat[i][j]); 
    			}
    			String str = ""+ binary;
    			mat[nbRow - 1][j] = toBinaryCol(str);
    		}
     
    		System.out.print("+: ");
    		System.out.println(mat[nbRow - 1]);
     
    		return mat;
    	}
     
    	public static char toBinaryCol(String s) {
     
    		int a = Integer.parseInt(s, 2);
    		int n = Integer.bitCount(a);
     
    		if (n % 2 == 0) return '0';
    		else return '1';
    	}
     
    	public static String toBinaryRow(char c) {
     
    		String s = Integer.toBinaryString(c);
    		int n = Integer.bitCount(c);
     
    		if(s.length()<7)                      //juste pour avoir le codage sur 7bits+1bit(le 0 ou 1)= 8bits
    			for(int i=1; i<=(7-s.length()); i++)   //car pour certains caractères tu obtiens ça par exemple
    				s= "0"+s;                          //&=100110 avec le traitement tu rajoutes le 1 donc &=1001101
    	                                               //que 7bits et tu obtiendras une erreur lors du traitement des colonnes aprés
    		if (n % 2 == 0) return s + "0";
    		else return s + "1";
    	}
     
    	public static void main(String[] args) {
     
    		CALCMAT("5el!o&");
    	}
    }
    tu obtiens ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    5: 01101010
    e: 11001010
    l: 11011000
    !: 01000010
    o: 11011110
    &: 01001101
    +: 10101001
    mais il y'a un problème avec les caractères avec accent. exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ô: 11110100
    ï: 11101111
    é: 11101001
    ils sont déja sur 8bits et lorsque tu ajoutes le 1 ou 0 de la méthode toBinaryRow ça fais 9. or tu as un tableau de 8 colonnes ?
    donc a toi de voir, soit tu les garde comme ça, soit tu ajoute une colonne a ton tableau.

  5. #5
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par Laine Voir le message
    Bonsoir
    Merci enormement

  6. #6
    Membre confirmé
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Points : 646
    Points
    646
    Par défaut
    de rien , avec plaisir

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

Discussions similaires

  1. Votre avis sur ce code - Générateur de mot de passe
    Par austin57 dans le forum Tkinter
    Réponses: 4
    Dernier message: 22/09/2012, 23h34
  2. [AMFPHP] [ORM & Code générateur]
    Par ritoon dans le forum Flex
    Réponses: 0
    Dernier message: 25/08/2010, 18h43
  3. [andromda]Infos sur andromda, générateur de code JAVA
    Par ugos dans le forum EDI et Outils pour Java
    Réponses: 5
    Dernier message: 08/09/2009, 15h30
  4. Réponses: 2
    Dernier message: 30/05/2007, 15h04
  5. Conseils code sur diagonalisation de matrice et autre
    Par Math75 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 23/02/2005, 14h12

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