2011-06-30 14 views
1

構造体の配列の2つのノード間の変数distを比較しようとしています。構造体の配列へのポインタ

これは構造体である:

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

は、これは私のコードです:

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) 
} 

しかし、それは間違っています。どのようにそれを行う必要がありますか?

+1

構造の宣言を含めて、その配列の定義方法を示し、正確にあなたが何をしようとしているかを聞かせてください。 –

答えて

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

これは何を行う予定ですか?

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

いくつかの中間変数を使用してクリーナーにすることができます。

EDIT

あなたの編集の光では、それはあなたが望む可能性があります:

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

私はarcos []内のi番目とj番目のdistの値を比較しようとしています。これらの値をポインタに与え、それらを比較します。 –

+0

@Ignacio Pochart「a」と「b」とは何ですか?この関数をどのように呼びますか? – cnicutar

1

あなたはというし、変数をstrutcsするポインタをcompairingています。私はあなたの構造体の定義を知らないが、私はあなたのようなものが必要だと思う:あなたのコードにミスがたくさんあります

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

を、あなたが最初にあなたの関数の宣言に対し、構造体のポインタを返すた 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) 
} 

また

if(*ia > *ib) 

のような比較が無効である、あなただけの、二つの構造を比較することはできませんのC++で、あなたは「>」演算子をオーバーロード可能性がありますが、中に同じことを行うことはできません私が知っている限り、c。

構造アークをどのように定義したか分かりませんが、それは保証されません。

0

arcoはarcoのメンバーではありません。

"それは間違っている"というより、取得しているコンパイラエラーを投稿すると、より良い回答が得られます。

関連する問題