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:
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:
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:
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