TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
 Specialized Dev Zones Research Center eBook Library .NET Java C++ Web Dev Architecture Database Security Open Source Enterprise Mobile Special Reports 10-Minute Solutions DevXtra Blogs Slideshow

 Home » Tip Bank » Visual Basic » Algorithms
Language: Algorithms
Expertise: Beginner
May 6, 1997

### WEBINAR:On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning

# Initializing a deck of cards using a for-loop

Question:
I have two enumerated types: enum suit_type{club,diamond,heart,spade} and enum rank_type{ace,two,...,queen,king}. In structure CARD, I have the variables suit_type suit and rank_type rank. In class PILE, I have a private variable: CARD storage[MAX_CARD]. I am trying to initialize the deck to 52 cards of spades, hearts, diamonds and clubs. Below is a substandard for-loop.
```for(int i=0;i
This for-loop achieves the results, but not in order of suit, then rank. I have tried to construct a for-loop that will do exactly that, but I am having some problems.
Answer: The trick here is to use nested for-loops. Here is an example:

class Card
{
public:
enum rank {ace,one,two,three,four,five,six,seven,eight,nine,ten,
jack,queen,king,end_rank};
Card (suit st = end_suit,rank rk=end_rank): suit_(st),rank_(rk)
{
}

const Card &operator = (suit s, rank r)
{
suit_ = s;
rank_ = r;
return *this;
}

rank Rank() const { return rank_;}
suit Suit() const { return suit;}
private:
suit suit_;
rank rank_;
};

class Deck
{
public:
Deck()
{
for(Card::suit s = spade; s < end_suit; ++s)
for(Card::rank r = ace; r < end_rank; ++r)
card_[s][r] = Card(s,r);
}

// ... other methods..
// ...

private:
Card card_[Card::suit_end][Card::rank_end];
};

Here I define a two-dimensional array and fill it with data according
to the suit, rank. I also defined a copy assignment operator for the
class Card so I can write the for-loop more elegantly.
Also, class Card needs a default constructor because it will be used in an
array.
```
DevX Pro

 Submit a Tip Browse "Visual Basic" Tips Browse All Tips
Comment and Contribute

(Maximum characters: 1200). You have 1200 characters left.

Thanks for your registration, follow us on our social networks to keep up-to-date