Topic 20 clockwise print matrix

////////////////////////////////////////////////// ///////////////////////////////////
// 2. topic 20 clockwise print matrix
// input a matrix , according to a clockwise turn from outside to inside to print out each number! ! !

20. Clockwise print matrix

void PrintMatirxInCircle ( int (* ppArray) [ . 4 ], int iRows, int iColumns, int iStart) 
{ 
    int iEndX iColumns = - . 1 - iStart;
     int iEndY iRows = - . 1 - iStart; 

    // 1. Print a line from left to right 
    for ( int I = iStart; I <= iEndX; I ++ ) 
    { 
        the printf ( " % 2D " , ppArray [iStart] [I]); 
    } 

    // 2. printed upside down an 
    IF (iStart < iEndY) 
    {
        for ( int I = iStart + . 1 ; I <iEndY; I ++ ) 
        { 
            the printf ( " % 2D " , ppArray [I] [iEndX]); 
        } 
    } 

    // 3. row from right to left printing 
    IF (iStart <&& iEndX iStart < iEndY) 
    { 
        for ( int I = iEndX - . 1 ; I> = iStart; i-- ) 
        { 
            the printf ( " % 2D " , ppArray [iEndY] [I]); 
        } 
    } 

    // 4. from bottom to top print a line 
    IF (iStart <iEndX && iStart <iEndY -1)
    {
        for (int i = iEndY - 1; i >= iStart + 1; i--)
        {
            printf("%2d ", ppArray[i][iStart]);
        }
    }
}

void PrintMatirxClockwisely(int (*ppArray)[4], int iRows, int iColumns)
{
    if (NULL == ppArray || iRows <= 0 || iColumns <= 0)
    {
        return;
    }

    int iStart = 0;
    while (iColumns > iStart * 2 && iRows > iStart * 2)
    {
        // 打印一圈数据
        PrintMatirxInCircle(ppArray, iRows, iColumns, iStart);

        iStart++;
    }
}

void PrintMatirxTestFunc()
{
    cout << "\n\n --------------- PrintMatirxTestFunc Start -------------->" << endl;
    int aiArray[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};

    PrintMatirxClockwisely(aiArray, 4, 4);

    cout << "\n\n --------------- PrintMatirxTestFunc End -------------->" << endl;

}

Guess you like

Origin www.cnblogs.com/yzdai/p/11258718.html