using a bit field
#include <iostream> #include <iomanip> using namespace std; struct BitCard { unsigned face : 4; unsigned suit : 2; unsigned color : 1; }; void fillDeck( BitCard * ); void deal( BitCard * ); int main() { BitCard deck[ 52 ]; fillDeck( deck ); deal( deck ); return 0; } void fillDeck( BitCard *wDeck ) { for ( int i = 0; i <= 51; i++ ) { wDeck[ i ].face = i % 13; wDeck[ i ].suit = i / 13; wDeck[ i ].color = i / 26; } } // Output cards in two column format. Cards 0-25 subscripted // with k1 (column 1). Cards 26-51 subscripted k2 in (column 2.) void deal( BitCard *wDeck ) { for ( int k1 = 0, k2 = k1 + 26; k1 <= 25; k1++, k2++ ) { cout << "Card:" << setw( 3 ) << wDeck[ k1 ].face << " Suit:" << setw( 2 ) << wDeck[ k1 ].suit << " Color:" << setw( 2 ) << wDeck[ k1 ].color << " " << "Card:" << setw( 3 ) << wDeck[ k2 ].face << " Suit:" << setw( 2 ) << wDeck[ k2 ].suit << " Color:" << setw( 2 ) << wDeck[ k2 ].color << endl; } }