//get the number of big squares / row DWORD dwBigSquare = (DWORD) sqrt((double)MAX_NUMBERS); float tt = (square % dwBigSquare); if (tt == 0) tt = 3; DWORD dwBigColumn = (DWORD) tt - 1; tt = ((square - 1) / dwBigSquare); DWORD dwBigRow = (DWORD) ( tt ); DWORD dwStartX, dwStartY; dwStartX = dwBigColumn * dwBigSquare; dwStartY = dwBigRow * dwBigSquare; DWORD dwStartPosition = dwStartY * MAX_NUMBERS + dwStartX; DWORD dwEndX = dwStartX + dwBigSquare; DWORD dwEndY = dwStartY + dwBigSquare; for(DWORD y = dwStartY; y < dwEndY; y++) { for(DWORD x = dwStartX; x < dwEndX; x++) { cout << m_dwBoard[y*MAX_NUMBERS + x] << "\t"; } cout << endl; }