Прежде всего, вместо того, чтобы изучать все методом проб и ошибок, подумайте о прочтении хорошей вводной книги ( список здесь ). Каждая книга, которую стоит прочитать, посвящена базовому вводу в C ++ и тому, как обрабатывать повторяющийся код, например, используя контейнеры.
Как говорится: я ничего не знаю о покере, но вам определенно нужно прочитать о контейнерах - если вы неоднократно определяете переменные, должен быть какой-то способ абстрагировать его.
Исходя из того, что у вас есть, допустим, мы сгруппировали значения в одну структуру:
struct Values {
unsigned suited;
unsigned unsuited;
Values() : suited(0), unsuited(0) {} // some default
};
Тогда мы можем использовать контейнеры, которые позволяют нам обращаться к ним по их номеру:
typedef std::map<unsigned, Values> SecondCardMap;
typedef std::map<unsigned, SecondCardMap> CardMap;
С этим мы можем удобно вставлять и изменять структуры по их номерам:
CardMap cards;
cards[14][14].unsuited = 169;
cards[13][13].unsuited = 168;
Теперь вам нужно только прочитать индексы от пользователя:
unsigned first, second;
std::cout << "enter first: ";
std::cin >> first;
std::cout << "enter second: ";
std::cin >> second;
И может получить доступ к значениям в соответствии с этим:
cards[first][second].unsuited = 1234;
Обратите внимание, что приведенное выше не касается обработки ошибок и т. Д.