什么是创建二维数组并在每个数据槽中填入不同字符的最简单方法?

时间:2015-11-02 18:18:19

标签: c++ arrays multidimensional-array

我的目标是使用2d阵列创建一个50x50"网格",并通过在网格中填写像' ^这样的字符来打印不同位置的不同形状,如三角形,正方形和矩形。 '和'#',像这样:

*****              ^
*****             ^ ^
*****            ^ ^ ^
*****           ^ ^ ^ ^

我目前的方法是使用嵌套的for循环来设置网格,创建边界并用“'”填充中间空间。 ':

for (r = 0; r < grid_h; r++) {

    for (c = 0; c < grid_w; c++) {
        grid[r][c] = ' ';

        grid[r][0] = '*';
        grid[r][grid_w - 1] = '*';

        grid[0][c] = '*';
        grid[grid_h - 1][c] = '*';

我不确定以上是否是最快/正确的方式来创建我所谓的&#34;网格&#34;用&#39; *&#39;在它周围(或者像绘画区一样)

无论如何,我最大的问题是:在网格中填写字符的最简单方法是什么?例如,如果我想从网格[1] [1]中打印一个正方形作为正方形的左上角,将网格[4] [4]作为正方形的右下角,我该怎么做呢正确的方式?非常感谢你。

1 个答案:

答案 0 :(得分:2)

这是最优雅的方式,也可能是最快的方式:)。

char str[3][6] = {
        "  ^  ",
        " ^^^ ",
        "^^^^^"
    };

第二个数字必须考虑每个字符串末尾的空终止符。它不能很好地扩展,因为它需要您手动填充它。但是结果可以立即看到,这很好。

如果您想以编程方式进行,而不是像我一样手工编写,您有两种选择:

  • 检查您是否在for循环内的矩形内;
  • 使用填充矩形的新for循环:

|

for( int x = 1; x < 5; x++ ){
    for( int y = 1; y < 5; y++ ){
        grid[y][x] = 'R';
    }
}