2011-06-30 7 views
1

J'essaie de comparer la variable dist entre deux noeuds de ma matrice de structures.pointeurs vers un tableau de structures

C'est la structure:

struct arco{ 
    int u, v; 
    double temp, dist; 
}arcos[MAXOASIS]; 

Voici mon code:

int compDist(const void *a, *void const *b, i, j){ 
    struct arco *ia = (struct arco *)a; 
    struct arco *ib = (struct arco *)b; 
    ia->arco[i].dist; 
    ib->arco[j].dist; 
    return(if(*ia > *ib)? *ia : *ib) 
} 

Mais il est faux. Comment devrait-il être fait?

+1

Incluez la déclaration de la structure, montrez-nous comment vous définissez ce tableau, et dites-nous exactement ce que vous essayez/demandez de faire. –

Répondre

3
ia->arco[i].dist; 
    ib->arco[j].dist; 

Qu'est-ce que c'est supposé faire? Vous voulez probablement quelque chose comme

return(ia->arco[i].dist > ib->arco[j].dist? ia->arco[i].dist : ia->arco[j].dist) 

Vous pouvez utiliser certaines variables intermédiaires pour le rendre plus propre.

EDIT

À la lumière de votre édition il est probable que vous voulez:

return (ia->dist - ib->dist); 
+0

J'essaie de comparer les valeurs de ith et jth dist dans arcos [], donnez ces valeurs aux pointeurs, puis comparez-les. –

+0

@Ignacio Pochart Et qu'est-ce que 'a' et' b'? Comment appelez-vous cette fonction? – cnicutar

1

Vous pointeur compairing à strutcs plutôt que des variables. Je ne sais pas votre définition struct mais je pense que vous avez besoin de quelque chose comme:

return(if(ia->arco[i].dist > ib->arco[i].dist)? 1 : 0); 
0

Il y a beaucoup d'erreurs dans votre code, Vous reveniez d'abord un pointeur de la structure alors que votre déclaration de fonction dit int.

struct arco *compDist(const void *a, *void const *b, i, j){ 
    struct arco *ia = (struct arco *)a; 
    struct arco *ib = (struct arco *)b; 
    return(if(ia->arco[i].dist > ib->arco[j].dist)? *ia : *ib) 
} 

également une comparaison comme

if(*ia > *ib) 

est invalide, vous ne pouvez pas comparer deux structures, en C++, vous pouvez surcharger le « > » opérateur, mais vous ne pouvez pas faire la même chose c pour autant que je sache.

Cela devrait fonctionner mais je ne peux pas le garantir car je n'ai aucune idée de comment vous avez défini votre structure arco.

0

arco n'est pas un membre d'arco. Au lieu de dire "c'est faux", publiez les erreurs de compilation que vous obtenez, et vous obtiendrez de meilleures réponses en retour.

Questions connexes