#include <stdio.h> #include <stdlib.h> #include<time.h> int player1[5],player2[5
ID: 3717190 • Letter: #
Question
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int player1[5],player2[5];
int index1=0,index2=0;
char suits_str[4][10]= {"Spades", "Hearts", "Diamonds", "Clubs"};
char faces_str[13][3] = {"2", "3", "4", "5", "6", "7", "8", "9","10", "J", "Q", "K", "A"};
int a[] = {1, 2, 3, 4, 5, 6, 7, 8,9, 10, 11, 12, 13, 14, 15,16, 17, 18, 19, 20, 21, 22,23, 24, 25, 26, 27, 28, 29,30, 31, 32, 33, 34, 35, 36,37, 38, 39, 40, 41, 42, 43,44, 45, 46, 47, 48, 49, 50,51,52};
void shuffle(int [],int);
void deal();
void display_card(int);
int is_drawn_before(int);
void delete_card_from_deck(int);
int main()
{
int i;
shuffle(a,52);
printf(" Shuffled Deck is ");
for (i=0; i<52; i++){
printf("%d ",a[i]);
}
printf(" ");
for(i=0;i<5;i++)
deal();
printf(" Remain Shuffled Deck is ");
for (i=0; i<42; i++)
printf("%d ",a[i]);
printf(" ");
return 0;
}
void shuffle(int card[], int n)
{
int i;
for (i=0; i<n ;i++)
{
int r = i + (rand() % (52 -i));
int temp=card[i];
card[i]=card[r];
card[r]=temp;
}
}
void deal()
{
int i;
int card;
do
{
card=rand()%52;
if(! is_drawn_before(card))
{
player1[index1]=card;
index1++;
delete_card_from_deck(card);
printf(" Player1 hand ");
for(i=0;i<index1;i++)
display_card(player1[i]);
break;
}
}while(1);
do
{ card=rand()%52;
if(! is_drawn_before(card))
{
player2[index2]=card;
index2++;
delete_card_from_deck(card);
printf(" Player2 hand ");
for(i=0;i<index2;i++)
display_card(player2[i]);
break;
}
}while(1);
return;
}
void display_card(int card)
{
int i,j,temp=0;
for(i=0;i<13;i++)
{
for(j=0;j<4;j++)
{
if(temp==card)
{
printf("Card from Suit is %s Value is %s ",suits_str[j],faces_str[i]);
return;
}
else
temp++;
}
}
}
void delete_card_from_deck(int card)
{
int i;
for(i=0;i<52;i++)
if(a[i]==card)
break;
while(i<51)
{
a[i]=a[i+1];
i++;
}
}
int is_drawn_before(int card)
{
int i;
for(i=0;i<5;i++)
{
if(player1[i]==card || player2[i]==card)
return 1;
}
return 0;
}
Explanation / Answer
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include<stdbool.h>
int player1[5],player2[5];
int index1=0,index2=0;
char suits_str[4][10]= {"Spades", "Hearts", "Diamonds", "Clubs"};
char faces_str[13][3] = {"2", "3", "4", "5", "6", "7", "8", "9","10", "J", "Q", "K", "A"};
int a[] = {1, 2, 3, 4, 5, 6, 7, 8,9, 10, 11, 12, 13, 14, 15,16, 17, 18, 19, 20, 21, 22,23, 24, 25, 26, 27, 28, 29,30, 31, 32, 33, 34, 35, 36,37, 38, 39, 40, 41, 42, 43,44, 45, 46, 47, 48, 49, 50,51,52};
void shuffle(int [],int);
bool deal();
void display_card(int);
int is_drawn_before(int);
void delete_card_from_deck(int);
int score_hand();
int value_card(int);
int main()
{
int i;
shuffle(a,52);
printf(" Shuffled Deck is ");
for (i=0; i<52; i++){
printf("%d ",a[i]);
}
printf(" ");
for(i=0;i<5;i++){
bool t=deal();
if(!t){
continue;
}
else{
int total1=score_hand(player1,index1);
int total2=score_hand(player2,index2);
if(total1>total2){
if(total1<=21){
printf(" Player1 wins.....Running Total: %d ",total1 );
}
else{
if(total2<=21){
printf(" Player2 wins.....Running Total: %d ",total2 );
}
else{
printf(" NO ONE WIN " );
}
}
}
else{
if(total2<=21){
printf(" Player2 wins.....Running Total: %d ",total2 );
}
else{
if(total1<=21){
printf(" Player1 wins.....Running Total: %d ",total1 );
}
else{
printf(" NO ONE WIN " );
}
}
}
break;
}
}
printf(" Remain Shuffled Deck is ");
for (i=0; i<42; i++)
printf("%d ",a[i]);
printf(" ");
return 0;
}
void shuffle(int card[], int n)
{
int i;
for (i=0; i<n ;i++)
{
int r = i + (rand() % (52 -i));
int temp=card[i];
card[i]=card[r];
card[r]=temp;
}
}
bool deal()
{
int i;
int card;
do
{
card=rand()%52;
if(! is_drawn_before(card))
{
player1[index1]=card;
index1++;
delete_card_from_deck(card);
printf(" Player1 hand ");
for(i=0;i<index1;i++)
display_card(player1[i]);
break;
}
}while(1);
int total1=score_hand(player1,index1);
printf("Running Total: %d ",total1);
do
{ card=rand()%52;
if(! is_drawn_before(card))
{
player2[index2]=card;
index2++;
delete_card_from_deck(card);
printf(" Player2 hand ");
for(i=0;i<index2;i++)
display_card(player2[i]);
break;
}
}while(1);
int total2=score_hand(player2,index2);
printf("Running Total: %d ",total2);
if(total1>=21||total2>=21){
return true;
}
else{
return false;
}
}
void display_card(int card)
{
int i,j,temp=0;
for(i=0;i<13;i++)
{
for(j=0;j<4;j++)
{
if(temp==card)
{
printf("Card from Suit is %s Value is %s ",suits_str[j],faces_str[i]);
return;
}
else
temp++;
}
}
}
void delete_card_from_deck(int card)
{
int i;
for(i=0;i<52;i++)
if(a[i]==card)
break;
while(i<51)
{
a[i]=a[i+1];
i++;
}
}
int is_drawn_before(int card)
{
int i;
for(i=0;i<5;i++)
{
if(player1[i]==card || player2[i]==card)
return 1;
}
return 0;
}
int score_hand(int* arr,int index){
int i,sum=0,count=0;
for(i=0;i<index;i++){
int ch=value_card(arr[i]);
if(ch==12){
count+=1;
}
else if(ch<8){
sum=sum+ch+2;
}
else{
sum+=10;
}
}
for(i=0;i<count;i++){
if(sum+11<21){
sum+=11;
}
else{
sum+=1;
}
}
return sum;
}
int value_card(int card){
int i,j,temp=0;
for(i=0;i<13;i++)
{
for(j=0;j<4;j++)
{
if(temp==card)
{
return i;
}
else
temp++;
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.