freeskate63 Si tu peux l'éviter, lévite | Bonjour, J'ai un problème, cela fait plusieurs jours que le bloque. J'ai une procédure qui est censé générer une matrice de codage sur 32 Bits pour l'algorithme de Reed-Muller (utilisé dans le codage d'images transmises par ondes radio). Lorsque le tableau à deux dimension se voit affecté ses valeurs dans la boucle tout va bien, mais une fois sortie de la boucle, impossible de retrouver ses valeurs, le tableau contient des valeurs aléatoires, comme s'il n'avais pas encore été "affecté"... voila le code (simplifié) Code :
- void ReedMuller_32(int r){
- int *base;
- int b;
- int Max_Horz,Nb_Rep,Cord_X,Cord_Y,i,j;
- long double deux = 2;
- int Puissance_de_R = pow(deux,r) ;
- base = new int[Puissance_de_R * (r+1)]; // tab[i,j] = tab[i*j] -- pour appel = tab[xi * i + xj]
- Max_Horz = Puissance_de_R;
- Nb_Rep = 1;
- for(Cord_Y=0;Cord_Y<Puissance_de_R+1;Cord_Y++){
- Cord_X = 0;
- b = 0;
- for(i=0;i<Max_Horz;i++){
- if (Nb_Rep==32){
- if(b==0)
- b=1;
- else
- b=0;
- }
- for(j=0;j<Nb_Rep;j++){
- base[(Cord_X*Puissance_de_R) + Cord_Y] = b;
- printf("%i",base[(Cord_X*Puissance_de_R) + Cord_Y]);
- Cord_X++;
- }
- if(b==0)
- b=1;
- else
- b=0;
- }
- printf("\n" );
- Max_Horz = Max_Horz/2;
- Nb_Rep = Nb_Rep * 2;
- }
- for(j=0;j<6;j++){
- for(i=0;i<32;i++){
- printf("%i",base[i*32 + j]);
- printf(" " );
- }
- printf("\n" );
- }
- }
| Voici une capture d'écran de l'execution. On voit bien le premier affichage en haut qui est correct, et le second en dessous ou les valeurs sont complêtements aléatoires comprises entre 0 et 254 (les tableaux de booléens en C sont en 8 bits? ) Merci de votre aide Message édité par freeskate63 le 30-12-2010 à 14:55:58
|