Write a program that will create a deck of cards, initialize values and properti
ID: 3630751 • Letter: W
Question
Write a program that will create a deck of cards, initialize values and properties for cards, shuffle, and print out the deck.hi, i have to create a program that will shuffle a deck of cards, i am just missing a function but i am still getting an error on the last part, can someone please help me? Thank you.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NCARDS 52
#define NPROPS 2
#define NSUITS 4
#define NFACES 13
char* suit[NSUITS]={"hearts","spades","clubs","diamonds"};
char* face[NFACES]={"ace","two","three","four","five","six","seven","eight","nine",
"ten","jack","queen","king"};
void PrintCard(int deck[NCARDS][NPROPS], int i);
void InitDeck(int deck[NCARDS][NPROPS]);
void SwapCards(int deck[NCARDS][NPROPS], int src, int dest);
void ShuffleDeck(int deck[NCARDS][NPROPS]);
int GetPlayValue(int deck[NCARDS][NPROPS], int i);
int main()
{
int deck[NCARDS][NPROPS];
int src;
int dest;
int i;
srand(time(NULL));
InitDeck(deck);
ShuffleDeck(deck);
SwapCards(deck, src, dest);
for (i=0; i<NCARDS; i++)
{
PrintCard(deck,i);
}
GetPlayValue(deck,i);
return 0;
}
void InitDeck(int deck[NCARDS][NPROPS])
{
int suit;
int face;
int row;
for (suit=0; suit<4; suit++)
for (face=0; face<13; face++)
{
deck[row][0]= suit;
deck[row][1]= face;
row++;
}
void ShuffleDeck(int deck[NCARDS][NPROPS])
{
int src, dest, i;
for (i=0; i<NCARDS; i++)
{
src = i;
dest = rand()%NCARDS;
SwapCards(deck, src, dest);
}
}
void SwapCards(int deck[NCARDS][NPROPS], int src, int dest)
{
int temp;
temp = deck[src][0];
deck[src][0] = deck[dest][0];
deck[dest][0] = temp;
temp = deck[src][1];
deck[src][1] = deck[dest][1];
deck[dest][1] = temp;
}
void PrintCard(int deck[NCARDS][NPROPS], int i)
{
int tempsuit;
int tempface;
tempsuit = deck[i][0];
tempface = deck[i][0];
printf("Card %d = %s of %s ", i, suit[tempsuit], face[tempface]);
GetPlayValue(deck,i);
}
int GetPlayValue(int deck[NCARDS][NPROPS], int i)
{
Explanation / Answer
Hello, your code is fine - you just had a few unclosed braces in for loops and functions. A few unnecessary calls to functions as well. I'm not sure what you need to do in the getPlayValue function since you don't explain much, but for just initializing, shuffling and displaying your deck - all you need is already there :) If you absolutely need that getPlayValue for some reason, then please explain what it does and it can get included where it needs to be pretty easily.
Here it is - clean C code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NCARDS 52
#define NPROPS 2
#define NSUITS 4
#define NFACES 13
char* suit[NSUITS]={"hearts","spades","clubs","diamonds"};
char* face[NFACES]={"ace","two","three","four","five","six","seven","eight","nine",
"ten","jack","queen","king"};
void PrintCard(int deck[NCARDS][NPROPS], int i);
void InitDeck(int deck[NCARDS][NPROPS]);
void SwapCards(int deck[NCARDS][NPROPS], int src, int dest);
void ShuffleDeck(int deck[NCARDS][NPROPS]);
int GetPlayValue(int deck[NCARDS][NPROPS], int i);
int main()
{
int deck[NCARDS][NPROPS];
int src;
int dest;
int i;
srand(time(NULL));
printf(" Initializing the deck... ");
InitDeck(deck);
printf(" Shuffling the deck... ");
ShuffleDeck(deck);
for (i=0; i<NCARDS; i++)
{
PrintCard(deck,i);
}
return 0;
}
void InitDeck(int deck[NCARDS][NPROPS])
{
int suit;
int face;
int row = 0;
for (suit=0; suit<4; suit++)
for (face=0; face<13; face++)
{
deck[row][0]= suit;
deck[row][1]= face;
row++;
}
}
void ShuffleDeck(int deck[NCARDS][NPROPS])
{
int src, dest, i;
for (i=0; i<NCARDS; i++)
{
src = i;
dest = rand() % NCARDS;
SwapCards(deck, src, dest);
}
}
void SwapCards(int deck[NCARDS][NPROPS], int src, int dest)
{
int temp;
temp = deck[src][0];
deck[src][0] = deck[dest][0];
deck[dest][0] = temp;
temp = deck[src][1];
deck[src][1] = deck[dest][1];
deck[dest][1] = temp;
}
void PrintCard(int deck[NCARDS][NPROPS], int i)
{
int tempsuit;
int tempface;
tempsuit = deck[i][0];
tempface = deck[i][0];
printf(" Card %d = %s of %s - Value = %d", i+1, face[tempface], suit[tempsuit], GetPlayValue(deck,i));
}
int GetPlayValue(int deck[NCARDS][NPROPS], int i)
{
int suit = deck[i][0];
int face = deck[i][0];
int value;
if(face ==0)
return 1;
else if( (face > 0) && (face < 10))
return face+1;
else
return 10;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.