嵌套在c ++中循环

时间:2011-03-07 14:56:25

标签: c++

我在编写以下函数之前所做的是,我将数字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告诉我?

2 个答案:

答案 0 :(得分:1)

卡循环可能不是必需的。相反,在内部循环内部,从行和列计算卡片。

切换行和列循环的顺序应该会改变输出(行主或列主要)

答案 1 :(得分:0)

如果你先行然后列然后卡,你将获得所有的心脏,然后所有的钻石,俱乐部和黑桃,并按顺序Ace,Deuce,三..国王

它是否放入一个额外的列取决于“卡”,它是随机包装在哪里,所以它几乎就像掷硬币是否会给你一个换行,除了你保证它会完全这样做26次。