打印给定列和行约束的交替X和O矩阵?

给定以下参数,我正在尝试编写一个打印 X 和 O 矩阵的算法:

int numRows
int numCols
int charsPerCol
int charsPerRow

例如打电话

printXOMatrix(int charsPerCol, int charsPerRow, int numCols, int numRows);

带参数

printXOMatrix(3,2,15,8);

将导致以下内容被打印到标准输出:

XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO

到目前为止,这是我的代码,如果列数/每列的字符数不同,它似乎可以正确打印,但在以下情况下会失败:

printXOMatrix(2,2,8,8);

以下内容打印到标准输出:

XXOOXXOO
OOXXOOXX
OOXXOOXX
XXOOXXOO
XXOOXXOO
OOXXOOXX
OOXXOOXX
XXOOXXOO

我如何处理这种边缘情况/清理我的代码?这是我到目前为止所拥有的:

回答

好吧,在确定代码与 selbie 所说的不一致之后,问题似乎是当您到达行尾时,您没有将 c 重置回行首时的状态!

但问题应该是:你为什么要写这么多代码?以下完全相同(好吧,除了正确处理边缘情况!):-

void PrintMatrix (int charsPerCol, int charsPerRow, int numCols, int numRows)
{
  for (int y = 0 ; y < numRows ; ++y)
  {
    for (int x = 0 ; x < numCols ; ++x)
    {
      printf ((((x / charsPerCol) & 1) ^ ((y / charsPerRow) & 1)) != 0 ? "o" : "x");
    }

    printf ("n");
  }
}


以上是打印给定列和行约束的交替X和O矩阵?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>