I think it is the wrong way.
from what I see, you can't deal with equal hands in your array.
I would build a function that would return the ranking of the hand.
[Update]
I would do something like
float RabkHand(hand Hand) {
float Rank;
if ((Ranf= Chk...(Hand)) != 0) {}
elseif ((Ranf= Chk...(Hand)) != 0) {}
else
Rank= ChkNothing(Hand);
return Rank:
}
Each Chk... is a function checking a given hand and returning the ranking of the hand.