# need to search a multidimensional array in c#

HI,

I'm having a hard time figuring out how to use a multidemensional array. Basically a deck of cards.
Here is the Deck:
--------------------------------------
int[,] cards = new int[52,2]
{
//11 = jack
//12 = queen
//13 = king
//14 = Ace

//1 = clubs
//2 = diamonds
//3 = hearts

{2,1},{2,2},{2,3},{2,4},
{3,1},{3,2},{3,3},{3,4},
{4,1},{4,2},{4,3},{4,4},
{5,1},{5,2},{5,3},{5,4},
{6,1},{6,2},{6,3},{6,4},
{7,1},{7,2},{7,3},{7,4},
{8,1},{8,2},{8,3},{8,4},
{9,1},{9,2},{9,3},{9,4},
{10,1},{10,2},{10,3},{10,4},
{11,1},{11,2},{11,3},{11,4},
{12,1},{12,2},{12,3},{12,4},
{13,1},{13,2},{13,3},{13,4},
{14,1},{14,2},{14,3},{14,4},
};
------------------
Am I using the right array, or should I use a jagged array?
I'm having a hard time searching the array.
For example, how would I search for all the objects with 4 as the first number in the array?
{4,1}, {4,2}, {4,3}, {4,4}?
###### Who is Participating?

Commented:
Here's how I would do it if I were you:

enum cardSuit {Clubs, Hearts, Diamonds, Spades};

struct Card {
cardSuit Suit;
uint Value;}

Card[] cards = new Card[52];

c=0;
Card aCard=new Card;
for(uint v=2;v<=14;v++){
aCard.Suit=s;
aCard.Value=v;
cards[c]=cCard;}}

Let's say using this approach you want to find all the 4s. Adapting the code I gave you earlier:
for(uint c=0,c<52,c++){
if(cards[c].Value==4){
//Put code here to deal with 4s
}
}

If you don't understand structs and enums, this can be confusing, but I think it will ultimately work the best for you.

Good luck!
0

Commented:
With a simple unsorted array, the only reliable way to search it is sequentially. For example:

for(uint c=0,c<52,c++){
if(cards[c,0]==4){
//Put code here to deal with 4s
}
}

The [] operator indexes into the array. Keeping in mind that the array is 0-based, cards[3,0] will be 2 and cards[3,1] will be 4, because the 3rd row of the cards array is {2,4}.

If you want more efficient searching you could sort using some strategy and do a binary search on the array.

Hope this helps.
0

Author Commented:
Thanks

I think I am really confused about how to do this.
When I list the full array, I have 104 items. I think I need 52 items.
I though that each item in the array would be in this format: (2, 1)(2, 2), but actually the array lists like this: 2, 1, 2, 2...

What I need to do is make a deck of cards, that does not need to be shuffled. I want to pull a card out, for example 2 of clubs...then count to see how many more 2's are left, and how many more clubs are left. The code you gave me works, but I think my array is wrong to start off with?
Should I use a single-dimension array, and just parse it using the binary search you mentioned earlier?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.