Erreur de segmentation
rosate999
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
rosate999 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
rosate999 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis besoin de votre aide SVP,
J'ai écrit une programme et après compilation j'ai toujours un erreur de segmentation, si quelqu'un peut m'aider.
voici une partie du programme que je pense que le problème se trouve dans cette partie:
typedef struct {
int i;
int j;
double distance;
} distance_t;
typedef struct {
int nbIndividus;
int nbVariables;
distance_t *distancesReference;
double **target;
} functionData_t;
double myfunc (unsigned n,const double *x, double *grad, void *my_func_data)
{
int i,j,k,ind1,ind2,a;
double temp,distanceCarre,numerateur,denominateur,score,distance;
int nbIndividus,nbVariables;
double **targetx, **target;
distance_t **distancesReference;
functionData_t *functionData=(functionData_t *)my_func_data;
nbIndividus=functionData->nbIndividus;
nbVariables=functionData->nbVariables;
targetx= functionData->target;
distancesReference=&(functionData->distancesReference);
numerateur=0;
denominateur=0;
for(i=0;i<nbIndividus;i++){
for(j=0;j<nbVariables;j++){
targetx[i][j]=(target)[i][j];
}
}
for(i=0;i<nbIndividus-1;i++){
ind1=distancesReference[i]->i;
ind2=distancesReference[i]->j;
distance=distancesReference[i]->distance;
distanceCarre=0;
for(k=0;k<nbVariables;k++) {
a=0;
temp=targetx[ind1][k]-targetx[ind2][k]+x[ind1*k+a]-x[ind2*k+a];
distanceCarre+=temp*temp;
a=a+1;
}
denominateur+=distanceCarre;
numerateur+=sqrt(distanceCarre)*((*distancesReference)[i]).distance;
}
score=calculScore(numerateur,denominateur);
return score;
}
je suis besoin de votre aide SVP,
J'ai écrit une programme et après compilation j'ai toujours un erreur de segmentation, si quelqu'un peut m'aider.
voici une partie du programme que je pense que le problème se trouve dans cette partie:
typedef struct {
int i;
int j;
double distance;
} distance_t;
typedef struct {
int nbIndividus;
int nbVariables;
distance_t *distancesReference;
double **target;
} functionData_t;
double myfunc (unsigned n,const double *x, double *grad, void *my_func_data)
{
int i,j,k,ind1,ind2,a;
double temp,distanceCarre,numerateur,denominateur,score,distance;
int nbIndividus,nbVariables;
double **targetx, **target;
distance_t **distancesReference;
functionData_t *functionData=(functionData_t *)my_func_data;
nbIndividus=functionData->nbIndividus;
nbVariables=functionData->nbVariables;
targetx= functionData->target;
distancesReference=&(functionData->distancesReference);
numerateur=0;
denominateur=0;
for(i=0;i<nbIndividus;i++){
for(j=0;j<nbVariables;j++){
targetx[i][j]=(target)[i][j];
}
}
for(i=0;i<nbIndividus-1;i++){
ind1=distancesReference[i]->i;
ind2=distancesReference[i]->j;
distance=distancesReference[i]->distance;
distanceCarre=0;
for(k=0;k<nbVariables;k++) {
a=0;
temp=targetx[ind1][k]-targetx[ind2][k]+x[ind1*k+a]-x[ind2*k+a];
distanceCarre+=temp*temp;
a=a+1;
}
denominateur+=distanceCarre;
numerateur+=sqrt(distanceCarre)*((*distancesReference)[i]).distance;
}
score=calculScore(numerateur,denominateur);
return score;
}
A voir également:
- Erreur de segmentation
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
4 réponses
Bonjour,
je n'est pas initialisé *my_func_data!! j'ai juste écrit comme celle noté dans ce site https://nlopt.readthedocs.io/en/latest/NLopt_Tutorial/ car mon problème est un problème d'optimisation et je veux utiliser NLOPT. my_func_data est une paramètre supplémentaire qui peut être utiliser dans le cas des données supplémentaires mais dans mon problème il n'y a pas des données supplémentaires donc c'est inutilisable mais il faut le mettre dans void myfunc pour éviter les erreurs dans NLOPT
cordialement,
rosate999
je n'est pas initialisé *my_func_data!! j'ai juste écrit comme celle noté dans ce site https://nlopt.readthedocs.io/en/latest/NLopt_Tutorial/ car mon problème est un problème d'optimisation et je veux utiliser NLOPT. my_func_data est une paramètre supplémentaire qui peut être utiliser dans le cas des données supplémentaires mais dans mon problème il n'y a pas des données supplémentaires donc c'est inutilisable mais il faut le mettre dans void myfunc pour éviter les erreurs dans NLOPT
cordialement,
rosate999
Beh c'est un tort...
functionData_t *functionData=(functionData_t *)my_func_data;
nbIndividus=functionData->nbIndividus;
Si my_func_data n'est pas initialisé, comment veux-tu que functionData puisse pointer sur quelque chose (nbIndividus par exemple)... Plantage assuré.
Il faut l'initialiser. En plus sur le site que tu donnes, l'initialisation semble être faite.
functionData_t *functionData=(functionData_t *)my_func_data;
nbIndividus=functionData->nbIndividus;
Si my_func_data n'est pas initialisé, comment veux-tu que functionData puisse pointer sur quelque chose (nbIndividus par exemple)... Plantage assuré.
Il faut l'initialiser. En plus sur le site que tu donnes, l'initialisation semble être faite.