Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

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:

/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

Please fix and post WORKING code with modification.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions