Question
C++ - program won't compile, please help Please fix and post WORKING code with modification. The program is below: #include #include #include #include using namespace
C++ - program won't compile, please help
Please fix and post WORKING code with modification.
The program is below:
#include
#include
#include
#include
using namespace std;
// Function prototypes
void BuildDeck( int deck[], const int size );
void PrintDeck( int deck[], const int size );
void Deal( int deck[], int play[][3] );
void PickUp( int deck[], int play[][3], int column );
void SecretCard( int deck[] );
void PrintCard( int card );
string Cap_Name( string word );
int main(void)
{
/* declare and initialize variables */
int column = 0, i = 0;
string name;
char playAgain;
char seeDeck;
/* Declare a 52 element array of integers to be used as the deck of cards */
int deck[52] = {0};
/* Declare a 7 by 3 array to receive the cards dealt to play the trick */
int play[7][3] = {0};
/* Generate a random seed for the random number generator. */
srand(time(0));
/* Opening message. Ask the player for his/her name */
cout << "Hello, I am a computer program that is so smart" << endl
<< "I can even perform a card trick. Here's how." << endl
<< "To begin the card trick type in your name: ";
cin >> name;
/* Capitalize the first letter of the person's name. */
name = Cap_Name(name);
cout << endl << "Thank you " << name << endl;
do
{
/* Build the deck */
BuildDeck(deck, 52);
/* Ask if the player wants to see the entire deck. If so, print it out. */
cout << "Ok " + name + ", first things first. Do you want to see what " << endl
<< "the deck of cards looks like (y/n)? ";
cin >> seeDeck;
if (seeDeck=='y')
{
cout << endl;
PrintDeck(deck, 52);
}
cout << endl << name << " pick a card and remember it..." << endl;
/* Begin the card trick loop */
for(i = 0; i < 3; i++)
{
/* Begin the trick by calling the function to deal out the first 21 cards */
Deal(deck, play);
/* Include error checking for entering which column */
do
{
/* Ask the player to pick a card and identify the column where the card is */
cout << endl <<"Which column is your card in (0, 1, or 2)?: ";
cin >> column;
} while(column < 0 || column > 2);
/* Pick up the cards, by column, with the selected column second */
PickUp(deck, play, column);
}
/* Display the top ten cards, then reveal the secret card */
SecretCard(deck);
/* if the player wants to play again */
cout << name << ", would you like to play again (y/n)? ";
cin >> playAgain;
} while(playAgain == 'y');
/* Exiting message */
cout << endl << endl << "Thank you for playing the card trick!" << endl;
return 0;
}
void BuildDeck( int deck[], const int size)
{
int used[52] = {0};
int card = 0, i = 0;
for(i = 0; i < 52; i++)
{
do
{
/* generate a random number between 0 and 51 */
card = rand() % 52;
/* Check the used array at the position of the card.
If 0, add the card and set the used location to 1. If 1, generate another number */
} while(used[card] == 1);
used[card]++;
deck[i] = card;
}
return;
}
void PrintDeck( int deck[], const int size )
{
int i;
/* Print out each card in the deck */
for (i = 0; i < 51; i++)
{
if(i%3 == 0)
cout << endl;
PrintCard(deck[i]);
}
}
void Deal( int deck[], int play[][3] )
{
int row = 0, col = 0, card = 0;
for (row = 0; row < 7; row++)
{
play[row][col] = deck[card];
for (col = 0; col < 3; col++)
{
play[row][col] = deck[card];
card++;
}
}
/* deal cards by passing addresses of cardvalues from
the deck array to the play array */
cout << endl;
cout << " Column 0 Column 1 Column 2" << endl;
cout << "=======================================================" << endl;
for(int row = 0; row < 7; row++)
{
for(int col = 0; col < 3; col++)
{
//cout.width(5);
PrintCard(play[row][col]);
}
cout< } return; } void PrintCard( int card ) // WORKS { int rank = 0; int suit = 0; rank = card % 13, suit = (card - rank) / 13; // Determine the rank of the card and print it out i.e. Queen if (rank == 0) cout < else if (rank == 9) cout < else if (rank == 10) cout < else if (rank == 11) cout < else if (rank == 12) cout < else cout < cout << " of"; // Determine the suit of the card and print it out i.e. of Clubs if (suit == 0) cout < else if (suit == 1) cout < else if (suit == 2) cout < else cout < return; } void PickUp( int deck[], int play[][3], int column ) { int card = 0, row = 0; for (row =0 ; row < 3; row++) { int pickupColumn = (column + row + 2) % 3; for(int cardInColumn = 0; cardInColumn < 7; cardInColumn++) { deck[card++] = play[cardInColumn][pickupColumn]; } } return; } void SecretCard( int deck[] ) { int card = 0; cout << endl <<"Finding secret card..." < for(card = 0; card < 10; card++) { cout.width(5); PrintCard(deck[card]); cout << endl; } cout << endl <<"Your secret card is: "; PrintCard(deck[card]); cout << endl; return; } Error: Please fix and post WORKING code with modification. /var/tmp/cclEY4eW.o: In function `main': main.cpp:(.text.startup+0xcc): undefined reference to `Cap_Name(std::string)' collect2: error: ld returned 1 exit status
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started