0

C++ のコーディングを学び始めたばかりなので、ご容赦ください。私の知識は非常に限られています。これはゼロから書いた私の最初のプログラムです。5 枚のカードのハンドを見て、ロイヤル フラッシュ、ストレートなどのタイプをユーザーに伝えるプログラムを書いています。

まず、ユーザーに手を入力させ、その手を配列に格納します。

私がする必要があるのは、その配列を検索して重複 (配列に 2 つの 3 があるなど) を探し、重複の数 (この例では 2) を数え、その数字 2 を別の配列の対応する位置に入れることです。カードの。

例: ユーザーは S11H11D11C11S10 (S - スペード、H - ハート、D - ダイアモンド、および C - クラブ) のハンドを持っています。ここでの数字 11 はジャックを表し、エースはランク 1、キングはランク 13 です。

したがって、ユーザーはハンドに 4 つのジャックと 10 のスペードを持っています。

これらの 4 つのジャックをカウントし、11 番目のスポットで別の配列に入れるプログラムが必要です。これにより、ユーザーが 4 枚のカードを持っていて、それらがジャックであることがわかります。

ここで私のコードを見ることができます:

ヘッダ:

#ifndef SUIT_H_INCLUDED
#define SUIT_H_INCLUDED
#include <string>

using namespace std;


struct Card {
int rank1;
int rank2;
int rank3;
int rank4;
int rank5;

char suit1;
char suit2;
char suit3;
char suit4;
char suit5;


};

#endif // SUIT_H_INCLUDED

主な機能:

#include <iostream>
#include <string>
#include "suit.h"

using namespace std;



int main()
{

int usrhand[10];


char a; //letters for declaring cards in hand
char b;
char c;
char d;
char e;

int f; //numbers for declaring rank of cards
int g;
int h;
int i;
int j;

Card hand; //initiates a structure for the players hand

    hand.suit1 = a;
    hand.suit2 = b;
    hand.suit3 = c;
    hand.suit4 = d;
    hand.suit5 = e;

    hand.rank1 = f;
    hand.rank2 = g;
    hand.rank3 = h;
    hand.rank4 = i;
    hand.rank5 = j;



cout << "Welcome to Card Sorter (TM) designed by ----" << endl;
cout << " " <<endl;
cout << "You will be prompted to enter your 5 card hand." <<endl;
cout << "I will prompt you for each card, one by one." <<endl;
cout << "I will ask you for the suit and then the rank of the card." <<endl;
cout << "Keep in mind: Spades=S, Hearts=H, Diamonds=D, Clubs=C" <<endl;
cout << "Also keep in mind the value of Ace is low, and is rank 1" <<endl;
cout << "While the value of a King is high and is rank 13." <<endl;
cout << "Let's begin." <<endl;
cout << " " << endl;
cout << "What is the suit of your first card (S,H,D,C)?" <<endl;
cin >> a;
cout << "What is the rank of your first card (1-13)" <<endl;
cin >> f;
cout << "What is the suit of your second card? (S,H,D,C)?" <<endl;
cin >> b;
cout << "What is the rank of your second card (1-13)" <<endl;
cin >> g;
cout << "What is the suit of your third card? (S,H,D,C)?" <<endl;
cin >> c;
cout << "What is the rank of your third card (1-13)" <<endl;
cin >> h;
cout << "What is the suit of your fourth card? (S,H,D,C)?" <<endl;
cin >> d;
cout << "What is the rank of your fourth card (1-13)" <<endl;
cin >> i;
cout << "What is the suit of your final card? (S,H,D,C)?" <<endl;
cin >> e;
cout << "What is the rank of your final card (1-13)" <<endl;
cin >> j;
usrhand[0] = a;
usrhand[1] = f;
usrhand[2] = b;
usrhand[3] = g;
usrhand[4] = c;
usrhand[5] = h;
usrhand[6] = d;
usrhand[7] = i;
usrhand[8] = e;
usrhand[9] = j;

cout <<" Lets take a look at your current hand. " <<endl;
printf("%c", usrhand[0]);
printf("%d", usrhand[1]);
printf("%c", usrhand[2]);
printf("%d", usrhand[3]);
printf("%c", usrhand[4]);
printf("%d", usrhand[5]);
printf("%c", usrhand[6]);
printf("%d", usrhand[7]);
printf("%c", usrhand[8]);
printf("%d", usrhand[9]);

//need to count duplicate ranks in this array (ie. player has 4 cards of the same value, let's say value is 5)
// and then place the counted value in another array at the
// correct position, the position that matches the value in this case (so array2[4] = 4)
// Then I will program something to examine the second array for its number values and print out the players hand
// (ie. array2[4] = 4, player has four 5's this is a Four of a Kind)

    return 0;
}
4

1 に答える 1

0

重複したランクを見つけるだけでよいため、次のように実行できます。

int dupCounter[13];
for (int i=0; i<13; i++)
{
    dupCounter[i] = 0;
}
for (int i=0; i<5; i++)
{
    dupCounter[usrhand[i*2+1]-1] ++;
}
于 2013-05-23T03:55:05.370 に答える