• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 524
  • Last Modified:

need to search a multidimensional array in c#


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
                  //4 = spades

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}?
  • 2
1 Solution
With a simple unsorted array, the only reliable way to search it is sequentially. For example:

for(uint c=0,c<52,c++){
//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.
unomateoAuthor Commented:

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?
Here's how I would do it if I were you:

//this is outside your function in your class
enum cardSuit {Clubs, Hearts, Diamonds, Spades};

struct Card {
  cardSuit Suit;
  uint Value;}

//this is in your function
Card[] cards = new Card[52];

Card aCard=new Card;
for(cardSuit s=Clubs;s<=Spades;s++){
  for(uint v=2;v<=14;v++){

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++){
    //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!
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.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now