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:
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
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; }
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
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'; }
Tout en esperant été clair dans mes propos.
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"; }
Merci d'avance pour tout
Partager