I just writing the simple twenty one card game...now evth work and fine.
And I put cards from 2 to A with concerning value.But when the debug step coming '0'comes to input with value '10'(K is worth 10 etc). It make me so confused.
here is my code:

``````#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;

struct
{
char face;
unsigned int value;
}
card[13] =
{	{'2', 2},{'2', 3},{'2', 4},
{'5', 5},{'6', 6},{'7', 7},
{'8', 8},{'9', 9},{'10', 10},
{'J', 10},{'Q', 10},{'K', 10},
{'A', 1}
};

int main()
{

cout<<"simple twenty one card"<<endl;
cout<<"------------------------"<<endl;
int compcard=3,compscore=0,urscore=0,draw=0,urcard=0;
char cond;
const int high=21;
//int ur;
do
{
int comptotal=0,urtotal=0;
//srand(time(NULL));
srand((unsigned)time(0));
cout<<"how many cards u want?(up to 5 cards)"<<endl;
cin>>urcard;
if (urcard>5)
cout<<"You could not get more than five cards!"<<endl;
else
{
cout<<endl<<"Ur cards..."<<endl;
for (int ucard=0;ucard<urcard;ucard++)
{
int x = rand() % 13;
printf(" |%c| ", card[x].face);

urtotal+=card[x].value;
if(urtotal>42)
{
urtotal=urtotal-30;
}
else if(urtotal>31&&urtotal<42)
{
urtotal=urtotal-20;
}
else if(urtotal>21&&urtotal<32)
{
urtotal=urtotal-10;
}

}

cout<<endl;
cout<<"My cards..."<<endl;
for (int Ccard=0;Ccard<compcard;Ccard++)
{
int x = rand() % 13;
printf(" |%c| ", card[x].face);
comptotal+=card[x].value;

if(comptotal>42)
{
comptotal=comptotal-30;
}
else if(comptotal>31&&comptotal<42)
{
comptotal=comptotal-20;
}
else if(comptotal>21&&comptotal<32)
{
comptotal=comptotal-10;
}

}
cout<<endl;
cout<<"I have "<<comptotal<<" and you have "<<urtotal<<" so ";

if(comptotal<=high&& urtotal<comptotal)
{
cout <<"I win "<<endl;
compscore++;
}
else if(comptotal<=high&& urtotal>high)
{
cout <<"I win "<<endl;
compscore++;
}
else if (urtotal<=high&& urtotal>comptotal)
{cout<<" you win"<<endl;
urscore++;
}
else if (urtotal<=high&& comptotal>high)
{cout<<" you win"<<endl;
urscore++;
}
else //(comptotal==urtotal)
{cout<<"no win"<<endl;
draw++;
}
}
cout<<"wana play again(n/y?)"<<endl;
cin>>cond;
}while(cond=='y');
cout<<"I win   : "<<compscore<<endl;
cout<<"you win : "<<urscore<<endl;
cout<<"we draw : "<<draw<<endl;
cout<<endl;
//cin>>ur;

}``````

example of output is like " |4||J||0||k||8|".
I dont want to include "0" . How can I do? Pls tell me.

Hint
Ask yourself why is it displaying, then how you might ignore it?

Hint
Ask yourself why is it displaying, then how you might ignore it?

``````{'J', 10},{'Q', 10},{'K', 10},
{'A', 1}``````

The above are all wrong. the values of J, Q, K and A are incorrect, should be 11, 12 , 13 and 14 respectively.

It's implementation defined what happens when you use an unrecognised character literal. You use '10', and that has too many expected characters, and C++ is seeing it as '0'.

``````#include <cstdio>

int main()
{
using namespace std;

char x = '10';

printf( "%d\t%c\n", x, x );
}``````

Thanks a lot u guys...