Hi, I'm having trouble with one last part of finishing my basic level C++ class.
The program requires you to enter your 3 cards so that it can program the total of the cards.
Everything seems to be in order so far, but I do not know how to set the values of the face cards- J, Q, K to 10, and A to 1.

Once I do that, I'm not sure if my line
if (sum<=11||x==1||y==1||z==1)
will work appropriately.

edit::I'm pretty sure that it doesn't work right now

``````/*CSC215-03
* Lab 3 Program 2
*  9/25/08
* Blackjack program
*/
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <cmath>

int main(int argc, char *argv[])

{

int sum(0), x, y, z, J(0), Q(10), K(10), A(1);
cin >>x;
cin >>y;
cin >>z;
sum=x+y+z;
if (sum<=11||x==1||y==1||z==1)
sum==sum+10;
cout << "Your total is "<<sum<<".";
if (sum > 21)
cout << " Bust!";

system ("pause");
return 0;

}``````
4
Contributors
6
Replies
7
Views
9 Years
Discussion Span
Last Post by VernonDozier

And also, I was wondering what C++ programs you would suggest for a student to use.

We use Codewarrior in our classroom, and the professor provided a link to DevC++, which, so far in my experience, sucks. Any other suggestions would be greatly appreciated!

Would I require something along the lines of the following? I tried only entering the part for x to try it out, and I get a "parse error before character constant" in the first line, so I can't run it.

if 'A' in x:
n = 1
elif 'K' in x:
n = 10
elif 'Q' in x:
n = 10
elif 'K' in x:
n = 10
if 'A' in y:
n = 1
elif 'K' in y:
n = 10
elif 'Q' in y:
n = 10
elif 'K' in y:
n = 10
if 'A' in z:
n = 1
elif 'K' in z:
n = 10
elif 'Q' in z:
n = 10
elif 'K' in z:
n = 10

I've always been partial to table-based solutions, especially when the list of choices gets longer than about five. Excessively long if chains and switches are irritating to work with. For example:

``````#include <algorithm>
#include <string>

namespace {
std::string face[] = {
"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"
};

int value[] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10
};

std::string get_face ( int key )
{
for ( int i = 0; i < sizeof value / sizeof *value; i++ ) {
if ( value[i] == key )
return face[i];
}

return "";
}
}``````

Unfortunately, I think that may be a little bit beyond my class's level. Might be sketchy to have in my program, don't want him to get the impression I know so much beyond the class's lessons, haha. Any possible solution on a more basic level?

So what you saying ? You can't have an array and loop through it?

In that case just use a switch or if else clause.

Would I require something along the lines of the following? I tried only entering the part for x to try it out, and I get a "parse error before character constant" in the first line, so I can't run it.

if 'A' in x:
n = 1
elif 'K' in x:
n = 10
elif 'Q' in x:
n = 10
elif 'K' in x:
n = 10
if 'A' in y:
n = 1
elif 'K' in y:
n = 10
elif 'Q' in y:
n = 10
elif 'K' in y:
n = 10
if 'A' in z:
n = 1
elif 'K' in z:
n = 10
elif 'Q' in z:
n = 10
elif 'K' in z:
n = 10

I assume you mean "else if", not "elif", I assume you mean == instead of "in", and you are comparing a char to an int. Like this?

``````if (x == 'K')
n = 10;
else if (x == 'Q')
n = 10;
else if (x == 'J')
n = 10;
else if (x == 'A')
n = 1;``````

I imagine that's what you are trying to do, but remember that you defined x, y, z as integers, not characters, so you should take user input into a char variable, not x, y, or z. If you know functions and don't want to use Narue's solution, write this function:

``int ReturnCardValue (char card)``

Stick the if statements in the function. That way you don't have to do the same code over and over for x, y, and z.

Call it like this:

``````char xcard;
int x;
cout << "Enter a card: ";
cin >> xcard;
x = ReturnCardValue (xcard);``````
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.