2016-12-18 4 views
0

Мне нужно решить проблему, которая требует от меня сравнить карты в колоде на 52 карты по костюму и по рангу. Однако проблема возникает, когда я сталкиваюсь с сопоставлением карточек, таких как королева или король, поскольку они обозначаются как «Q» или «K», поэтому я не могу хранить их в ценности моей карты, поскольку это объявлено как int.преобразовать символ в определенное значение в C++

Как назначить буквы типа Q или K целых значений, чтобы я мог присвоить это числовое значение карте?

+0

* символ * буквальный '' Q'' может быть преобразован в значение 'int' и наоборот. Или вы имеете в виду, что у вас есть настоящие * строки *? –

+0

Так что не идентифицируйте карты таким образом. Q, K и т. Д. Предназначены для читателей, не обязательно для внутреннего использования. Напишите функцию, которая преобразует внутренние значения в текстовые представления. –

ответ

0

Вы можете взять числовые значения для карт от 2 до 10, а затем продолжить с J = 11, Q = 12, K = 13. Туз будет либо один, либо 14, в зависимости от того, находится ли он ниже двух или над королем.

Один из способов заключается в использовании switch заявлении,

int value; 
char card; 
switch (card) { 
case 'J': 
    value = 11; 
    break; 
case 'Q': 
    value = 12; 
    break; 
case 'K': 
    value = 13; 
    break; 
case 'A': 
    value = 14; 
    break; 
} 
+0

Вот что я думал, но я не знаю, как я это делаю. В настоящее время, от 2 до 10, у меня есть –

+0

Я имел в виду, что у меня есть x [i] .value = p [0] - '0'; который отлично работает. Однако я не знаю, что делать с письмами. –

0

Количество всех карт в колоде от 0-51.

Имейте отдельный массив (или два), который указывает, что, например, карта № 0 является тузом пик, карточка № 1 - это две пики и т. Д., Дающая ранг и костюм каждой карты в колоде ,

Теперь сравните свои карты любым способом.

Смежные вопросы