我在编写以下函数之前所做的是,我将数字1到52分配给52张卡片(在2行数组中有4行和13列)。现在我要打印持有数字的卡片(按升序排列)以某种方式在一行中有2个显示...
void DeckOfCards::deal()
{
// initialize suit array
static const char *suit[ 4 ] =
{ "Hearts", "Diamonds", "Clubs", "Spades" };
// initialize face array
static const char *face[ 13 ] =
{ "Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven",
"Eight", "Nine", "Ten", "Jack", "Queen", "King" };
// for each of the 52 cards
for ( int card = 1; card <= 52; card++ )
{
// loop through rows of deck
for ( int row = 0; row <= 3; row++ )
{
// loop through columns of deck for current row
for ( int column = 0; column <= 12; column++ )
{
// if slot contains current card, display card
if ( deck[ row ][ column ] == card )
{
cout << setw( 5 ) << right << face[ column ]
<< " of " << setw( 8 ) << left << suit[ row ]
<< ( card % 2 == 0 ? '\n' : '\t' );
} // end if
} // end innermost for
} // end inner for
} // end outer for
} // end function deal
但是如果我改变了州议员的顺序,那么行首先是列然后是列然后是卡片...我得到的是一个完全不同的输出布局....单行中没有两个输出....它是完全无序的......为什么PLZ告诉我?
答案 0 :(得分:1)
卡循环可能不是必需的。相反,在内部循环内部,从行和列计算卡片。
切换行和列循环的顺序应该会改变输出(行主或列主要)
答案 1 :(得分:0)
如果你先行然后列然后卡,你将获得所有的心脏,然后所有的钻石,俱乐部和黑桃,并按顺序Ace,Deuce,三..国王
它是否放入一个额外的列取决于“卡”,它是随机包装在哪里,所以它几乎就像掷硬币是否会给你一个换行,除了你保证它会完全这样做26次。