Académique Documents
Professionnel Documents
Culture Documents
Ecrire une nouvelle fonction de lecture, qui prend comme paramtre une
chane de caractres (correspondant au nom du fichier contenant la matrice),
et qui retourne un tableau d'entiers deux dimensions stockant les coefficients
de la matrice.
Afin de minimiser la fois la taille prise en mmoire pour stocker la matrice gnratrice et le
temps de calcul, on stocke la matrice gnratrice binaire dans un tableau deux dimensions
dont chaque ligne est constitue d'entiers de type unsigned long (64 bits sur un DEC alpha).
De cette faon, on peut diviser la taille de chaque ligne par un facteur proche de 8 *
sizeof(unsigned long). Par exemple, le vecteur binaire de longueur 10, 1001000101 peut
tre stock sur un unsigned long dont la valeur (en base 10) est 20 + 23 + 27 + 29 = 649.
On travaillera donc dans toute la suite sur une matrice gnratrice compacte de type
unsigned long **. Pour cela, crire une fonction qui lit la matrice binaire telle qu'elle est crite
dans le fichier et qui retourne la matrice compacte correspondant. Les longueur et dimension
du code, ainsi que le nombre de colonnes de la matrice compacte pourront tre dclares
comme des variables globales. On veillera ce que le programme soit portable, en
particulier ce qu'il fonctionne galement sur des architectures o un entier de type
unsigned long est cod sur 64 bits.
Le prototype de la fonction crire sera :
unsigned long **lire_matrice(void);
Si gk = 0, modifier g0.
Sinon :
o
Ainsi, les vecteurs de F22 seront numrs dans l'ordre suivant : (0,0) - (1,0) - (1,1) - (0,1)
On peut utiliser cette mthode pour numrer toutes les combinaisons linaires de k lignes.
L'indice de la coordonne modifier chaque tape de l'algorithme prcdent correspond
l'indice de la ligne ajouter la combinaison linaire prcdente. Par exemple, pour k=2, on
numrera les combinaisons linaires dans l'ordre suivant : vecteur nul, ligne 1, ligne 1 +
ligne 2 , ligne 2.