ex8-8.cpp - Example 8-8 Printing a deck

// File: ex8-8.cpp

#include <iostream>
#include <cmath>
using namespace std;

const char suit_char[5] = "CDHS";
const char pips_char[14] = "23456789TJQKA";

class deck;

class card
{
  private:
	 int suit;
	 int pips;
  public:
	 card(int);
  friend ostream& operator<<(ostream&,const deck&);

};

card::card(int x)
{
  suit = x / 13;
  pips = x % 13;
}
class deck
{
  private:
	 card* d[52];
  public:
	 deck();
	 ~deck();
  friend ostream& operator<<(ostream&,const deck&);
};

deck::deck()
{
  for (int i = 0; i < 52; i++) d[i] = new card(i);
}

deck::~deck()
{
  for (int i = 0; i < 52; i++) delete d[i];
}

int main(void)
{
  deck cards;
  cout << cards;
  return 0;
}

ostream& operator<<(ostream& s,const deck& dk)
{
  for (int i = 0; i < 52; i++)
  {
	 s << pips_char[dk.d[i]->pips] << suit_char[dk.d[i]->suit];
	 if (i % 13 == 12) s << endl;
	 else s << ' ';
  }
  return s;
}




CIS27: Programming in C++    Instructor: Joe Bentley