Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# need to search a multidimensional array in c#

Posted on 2004-10-15
Medium Priority
518 Views
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}?
0
Question by:unomateo
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

LVL 1

Expert Comment

ID: 12325168
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 Comment

ID: 12325441
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

LVL 1

Accepted Solution

RogueAce earned 1000 total points
ID: 12325613
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

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
###### Suggested Courses
Course of the Month12 days, 8 hours left to enroll