Probleme en C

Bonjour,
Alors voila je tape le code suivant

int Compute_metric(double *y, double **w, unsigned int n, double amp)
{
// This function computes the metric m for each symbol using the received signal y
// and the signal amplitude amp
// y is the pointer to the received signal
// w is the pointer to the metric matrix (2^N rows, n columns)
// n is the length of y ( Frame_Length+M)
// amp is the amplitude of the signal

// ***** COMPUTE THE TRELLIS METRIC MATRIX *******

unsigned int i;
unsigned int l;

// for each transition compute the corresponding metric
for(i=0;i<n;i++) // For each transition
{
for( l=0;l<N;l++)
{
**(w+i) += - fabs(*(y+(n*i+l))-(*(x+l))*amp)**2;
}
}

// ***** END COMPUTING THE TRELLIS METRIC MATRIX ************
return(0);
}

Et il m'affiche l'erreur suivante : illegal indirection, concernant la ligne à l'intérieur de la boucle for(l=0...)
Merci de votre aide

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Je ne peux pas te dire exactement pourquoi ça ne compile pas mais je peux te dire que je trouve étrange ta déclaration double **w. Je suis certain que le problème se situe à cet endroit. De la façon que tu le déclare, c'est comme si tu as un tableau de pointeurs à des double, donc que le type de (*w) serait un *double. si c'est le cas, tu devrais faire: *((*w) + i) à la place de **(w+i). Si je me gourre et que ce n'est pas ça le problème, c'est surement le **2 qui est le problème: il n'y a pas d'opérateur de puissance en c++. Enfin, simple question d'esthétique, tu devrais faire -= à la place de =+ - .
    1. Webmaster
      Salut !

      for( l=0;l<N;l++)

      C'est un erreur de frappe ? sinon ca devrait etre n
      :o)

      @+

      Na kaer eo va Breizh,
      gand ar mor glaz èn-dro dezi !
      1. je suis dac pour la faute de frappe mais ça ne peux pas donner l'erreur illegal indirection par contre.