I was wondering how to assign the ace a value in a blackjack program and convert a number to a string. So far I have:

#include <iostream>
using namespace std;

struct card{
int value;
string face;//had this as a char, but need a string for 10
int suit;

int main()
card deck[52];
int cardIndex;

for(int suit=0; suit<4; suit++)//repeat for times for 4 suits
for(int i=0; i<13; i++)//13 cards in a suit
cardIndex = i+(suit*13);
//this calculates the spot in the cards
//based on what card and also what the suit is

//since we're already inside the suit at this point, assign it
deck[cardIndex].suit = suit;

//now assign the values
{//for all cards under 10
deck[cardIndex].value = i+2;//move in multiples of 13
//plus 2 because the index is off and the cards start at 2

//at this point, we can assign the face as the value
//a problem we have, is that the value is a number, not a string
//how do i convert a number to a string???
//deck[cardIndex].face = ???;
{//for cards 10 through ace
deck[cardIndex].value = 10;
if(i==8)//we're at 10
deck[cardIndex].face = "10";
else if(i==9)//Jack
deck[cardIndex].face = "J";

return 0;

Am I doing anything wrong?

Edited by happygeek: fixed formatting

10 Years
Discussion Span
Last Post by vmanes

You might get more help if you'd posted this to the C++ forum.

As to storing face values based on your loop index, your if...else branching seems adequate.

As you proceed, the Ace will be a problem in scoring - you will have to consider it as either a 1 or an 11. It's not too hard, I give this as a first semester problem from time to time.

Please use some indenting and other whitespace to improve readability. That will also encourage others to help you.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.