所以我一次性寻求帮助后,就更加努力了我的程序,这就是我现在拥有的。更多2D扑克牌数组的帮助C++
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <iomanip>
using namespace std;
void main()
{
const int ROWS = 4;
string suits[ROWS] =
{
"Diamonds", "Clubs", "Hearts", "Spades"
};
const int COLS = 13;
string faces[COLS] =
{
"Ace", "Deuce", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"
};
int deck[ROWS][COLS] =
{
{1,2,3,4,5,6,7,8,9,10,11,12,13},
{14,15,16,17,18,19,20,21,22,23,24,25,26},
{27,28,29,30,31,32,33,34,35,36,37,38,39},
{40,41,42,43,44,45,46,47,48,49,50,51,52}
};
for(int iii = 0; iii < ROWS; iii++)
{
for(int jjj = 0; jjj < COLS; jjj++)
{
cout << deck[iii][jjj] << " " << faces[jjj] << " of " << suits[iii] << endl;
}
}
srand((unsigned) time(0));
for(int c = 0; c < ROWS; c++)
{
for(int d = 0; d < COLS; d++)
{
int face = rand() % 13;
int suit = rand() % 4;
cout << left << setw(5) << " " << faces[face] << " of " << suits[suit] << endl;
int e = deck[suit][face];
deck[suit][face] = deck[c][d];
deck[c][d] = e;
cout << deck[c][d];
}
}
}
当我运行该程序的第一循环简单地列出了甲板为了伟大工程:
1 Ace of Diamonds
2 Deuce of Diamonds
3 Three of Diamonds
4 Four of Diamonds
5 Five of Diamonds
6 Six of Diamonds
7 Seven of Diamonds
8 Eight of Diamonds
9 Nine of Diamonds
10 Ten of Diamonds
等。第二环路然而应该洗牌,然后再次打印甲板:
Nine of Clubs
22 King of Hearts
39 Queen of Spades
51 Seven of Spades
46 Ace of Spades
40 Six of Spades
45 Three of Spades
42 Seven of Hearts
33 Four of Diamonds
46 Five of Diamonds
40 Seven of Diamonds
42 Queen of Clubs
25 Five of Clubs
18 Four of Hearts
30 Ace of Clubs
30 Three of Clubs
16 Jack of Clubs
24 Deuce of Spades
41 Eight of Diamonds
33 Queen of Spades
3 Seven of Hearts
8 Jack of Hearts
37 Eight of Diamonds
19 Four of Clubs
24 Queen of Hearts
38 Three of Hearts
29 Nine of Clubs
37 Ace of Diamonds
22 Ace of Hearts
37 Queen of Diamonds
25 Four of Diamonds
9 Four of Diamonds
31 Three of Hearts
37 Nine of Clubs
27 Nine of Clubs
34 Ten of Hearts
36 Five of Hearts
9 Jack of Clubs
24 Five of Spades
44 Seven of Clubs
3 Six of Hearts
31 Jack of Spades
50 Ten of Diamonds
40 Six of Clubs
33 Eight of Diamonds
23 Ten of Hearts
36 Ace of Hearts
26 Six of Spades
23 Nine of Clubs
35 Seven of Clubs
5 Five of Hearts
1 Five of Diamonds
10Press any key to continue . . .
问题1:所有2D阵列的数目的不正确地与一维数组的字符串对应。例如,九号俱乐部的号码是正确的,号码是正确的,直到你找到一号码,这是三个俱乐部并不正确,并从那里一切搞乱。
问题2:数字和字符串没有完全对齐,字符串开始首先打印,所以字符串数字在一个和一个以上。
问题3:一些数字和字符串重复我不想要的。我如何确保他们不会重复。
至于对齐问题,请检查['setw()'I/O流操纵器](http://en.cppreference.com/w/cpp/io/manip)。至于你的第一个问题,C++中的索引开始于'0',而不是'1'!你的第一副牌应该有'{0,1,2,3,4,5,6,7,8,9,10,11,12}'aso。 – 2014-10-28 17:02:11
“更多帮助”不是一个问题。而且帖子中陈述的问题过于宽泛(没有提及它不止一个问题)。请关注一个特定的问题。它不仅会帮助你在SO上得到答案,甚至可以自己解决问题。 – BartoszKP 2014-10-28 17:05:41
使用调试器总是比使用StackOverflow查找问题的效率更高。 – 2014-10-28 17:25:18