Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program that will operate on a deck of 52 cards. Your program will: 1. D

ID: 656456 • Letter: W

Question

Write a program that will operate on a deck of 52 cards. Your program will: 1. Deal them into four random hands of 5 cards each a. The four hands need to be kept in an array for later use. 2. Sort each hand so that it shows the cards in sequence from two as the lowest to ace as the highest. 3. Display the cards in each hand using the card face (2, 10, King, etc.) and the suit (Spades, Hearts, etc.) 4. Display what you determined the hand to be. A ranking of poker hands is at http://www.pagat.com/vying/pokerrank.html a. Straight flush b. Four of a kind c. Full House d. Flush e. Straight f. Three of a kind g. Two pair h. One pair i. Highest card 5. Each time the program is run, a different set of hands is to be dealt. BONUS: Determine which is the winning hand. A tie is possible. (25 points)

NOTES: 1. Use a structure to hold the face value and suit of each card. 2. Use enumerations for the values of Jack, Queen, King, and Ace and to identify the suits (Diamonds, Clubs, etc.).

Explanation / Answer

#include <iostream>

using namespace std;

#include "Card.h"

void main()
{
       Card   C;

   C.Suit   = Diamonds;
   C.Value   = Queen;

   Display (C);
  
   Card   Deck[NumCardsInDeck];
   Card   Hands[4][5];
   int       i, j;

   InitDeck(Deck);
   cout << " The deck starts as " << endl;
   ShowDeck(Deck);
   Shuffle(Deck);
   cout << " After shuffling it is" << endl;
   ShowDeck(Deck);

   j = 0;

   for (i = 0; i < 5; i++)
   {
       Hands[0][i] = Deck[j];
       j++;
   }
   SortHand(Hands[0]);
   cout << "Hand 1 is: " << endl;
   if (HighestCard(Hands[0]))
       cout << " Highest Card" << endl;
   if (OnePair(Hands[0]))
       cout << " One Pair" << endl;
   if (IsThreeOfAKind(Hands[0]))
       cout << " Three of a kind" << endl;

   for (i = 0; i < 5; i++)
   {
       Display(Hands[0][i]);
   }

   for (i = 0; i < 5; i++)
   {
       Hands[1][i] = Deck[j];
       j++;
   }
   SortHand(Hands[1]);
   cout << "Hand 2 is: " << endl;
   for (i = 0; i < 5; i++)
   {
       Display(Hands[1][i]);
   }

   for (i = 0; i < 5; i++)
   {
       Hands[2][i] = Deck[j];
       j++;
   }
   SortHand(Hands[2]);
   cout << "Hand 3 is: " << endl;
   for (i = 0; i < 5; i++)
   {
       Display(Hands[2][i]);
   }


   for (i = 0; i < 5; i++)
   {
       Hands[3][i] = Deck[j];
       j++;
   }
   SortHand(Hands[3]);
   cout << "Hand 4 is: " << endl;
   for (i = 0; i < 5; i++)
   {
       Display(Hands[3][i]);
   }
  
   for (i = 0; i < 4; i++)
   Sort (Hands [i]);

   if (IsThreeOfAKind (Hands [0]))

  
}

#include <iostream>

using namespace std;

#include <stdlib.h>
#include <time.h>
#include <string.h>

#include "Card.h"

char * ValueNames [13]   =   {
                           "Two",
                           "Three",
                           "Four",
                           "Five",
                           "Six",
                           "Seven",
                           "Eight",
                           "Nine",
                           "Ten",
                           "Jack",
                           "Queen",
                           "King",
                           "Ace"
                           };

void Display (const Card & C)
   {
   cout << (char) C.Suit << ' ' << ValueNames [C.Value] << endl;
   }

void InitDeck (Card Deck [])
   {
   int       i;
   Suits   S;
   Values   V;

   srand (time (0));   // initialize the random numbers for use later in shuffling
   i = 0;
   for (S = Hearts; S <= Spades; S = (Suits) (S + 1))
       for (V = Two; V <= Ace; V = (Values) (V + 1))
           {
           Deck [i].Suit   = S;
           Deck [i].Value   = V;
           i++;
           }
   }

void SortHand (Card Hand [])
{
int       i;
int       j;
int       CardOne;
int       CardTwo;
Card   Temp;

for (j = 0; j < 5; j++)
{
CardOne = 0;
CardTwo = 1;
   for (i = 0; i <= 4; i++)
   {
   if (Hand [CardOne].Value > Hand [CardTwo].Value )
       {
       Temp = Hand [CardOne];
       Hand [CardOne] = Hand [CardTwo];
       Hand [CardTwo] = Temp;
       }
   else;

   CardOne++;
   CardTwo++;
   i++;
   }
}
if (Hand [3].Value > Hand [4].Value)
   {
   Temp = Hand [3];
   Hand [3] = Hand [4];
   Hand [4] = Temp;
   }
       if (Hand [2].Value > Hand [3].Value)
           {
           Temp = Hand [2];
           Hand [2] = Hand [3];
           Hand [3] = Temp;
           }

               if (Hand [1].Value > Hand [2].Value)
               {
               Temp = Hand [1];
               Hand [1] = Hand [2];
               Hand [2] = Temp;
               }
                       if (Hand [0].Value > Hand [1].Value)
                       {
                       Temp = Hand [0];
                       Hand [0] = Hand [1];
                       Hand [1] = Temp;
                       }

}

void ShowDeck (const Card Deck [])
   {
   int       i;

   for (i = 0; i < NumCardsInDeck; i++)
       Display (Deck [i]);
   }

void ShowHand (Card Deck [])
{
int       i;
for (i = 0; i < 5; i++)
   Display (Deck [i]);
}

void Shuffle (Card Deck [])
   {
   int       CardOne;
   int       CardTwo;
   Card   Temp;

   for (CardOne = 0; CardOne <NumCardsInDeck; CardOne++)
       {
       CardTwo = rand () % NumCardsInDeck;
       Temp           = Deck [CardOne];
       Deck [CardOne]   = Deck [CardTwo];
       Deck [CardTwo]   = Temp;
       }
   }

void Deal (Card Deck [])
{
int       CardOne;
int       CardTwo;
Card   Temp;

   for (CardOne = 0; CardOne < 5; CardOne++)
       {
       CardTwo = rand () % 5;
       Temp           = Deck [CardOne];
       Deck [CardOne]   = Deck [CardTwo];
       Deck [CardTwo]   = Temp;
       }
}

bool   HighestCard (Card Hand [])
{
if (Hand [0].Value != Hand [1].Value && Hand [0].Value != Hand [2].Value && Hand [0].Value != Hand [3].Value
   && Hand [0].Value != Hand [4].Value && Hand [1].Value != Hand [2].Value && Hand [1].Value != Hand [3].Value &&
   Hand [1].Value != Hand [4].Value && Hand [2].Value != Hand [3].Value && Hand [2].Value != Hand [4].Value && Hand [3].Value != Hand [4].Value)
       {
       return true;
       cout << "a HighCard " << endl;
       }
   else
           return false;
}

bool   OnePair (Card Hand [])
{
if ((Hand [0].Value == Hand [1].Value && Hand [0].Value != Hand [2].Value) ||
   (Hand [1].Value == Hand [2].Value && Hand [1].Value != Hand [3].Value) ||
   (Hand [2].Value == Hand [3].Value && Hand [2].Value != Hand [4].Value) ||
   Hand [3].Value == Hand [4].Value)
   {
   return true;
   }
else
       return false;
}

bool IsThreeOfAKind (Card Hand [])
   {
   if ((Hand [0].Value == Hand [2].Value) || (Hand [1].Value == Hand [3].Value) || (Hand [2].Value == Hand [4].Value))
           {
           return true;
           cout << "Three of a Kind" << endl;
           }
       else
           return false;
   }

#ifndef CARD_H
#define CARD_H

enum Suits   {Hearts = 3, Diamonds, Clubs, Spades};
enum Values   {Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace};

const int NumCardsInDeck   (52);

struct Card
   {
   Suits   Suit;
   Values   Value;
   };

void Display (const Card &);
                              
void InitDeck       (Card []);
void SortHand       (Card []);
void ShowDeck       (const Card []);
void ShowHand       (Card []);
void Shuffle       (Card []);
void Deal           (Card []);
bool HighestCard   (Card []);
bool OnePair       (Card []);
bool IsThreeOfAKind   (Card []);


#endif

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote