在二维char数组中绘制一个三角形

时间:2015-01-05 03:19:03

标签: c++ for-loop multidimensional-array char geometry

我试图使用2d字符数组作为形状的表格,我在尝试绘制三角形时遇到了麻烦。给定三角形顶部的位置及其高度,我的函数应该通过改变我已经分配给它的元素来绘制一个25行,80列字符数组中的三角形。 '这是我到目前为止所做的:

int i, j;
for(i=0; i<height; i++){
    for(j=-i; j<=i; j++){
        screen[x+i][y+j]=ch;
    }
}    

screen是我的2d char数组的名称。

例如,对于高度为3的三角形,它应该是这样的:

  *
 ***
*****    

但由于某些原因它似乎无法运作,我无法理解为什么。

我为没有澄清我的代码所做的事情而道歉。 我有以下功能来打印我的2d数组:

void PrintScreen(){
    int i, j;
    for(i=0; i<SCREEN_HEIGHT; i++)
    {
        for(j=0; j<SCREEN_WIDTH; j++)
        {
            printf("%c", screen[i][j]);
        }
        printf("\n");
    }
} // end-PrintScreen

我弄清楚我做错了什么。由于我犯了一个错误,我以前看不到任何我运行程序的东西。如果其他人需要有关同一问题的帮助,上面的代码应该可以正常工作。

1 个答案:

答案 0 :(得分:2)

从你的片段中缩小的这个极简主义的例子对我有用:

#include <stdio.h>

#define SCREEN_HEIGHT 25
#define SCREEN_WIDTH 80

char screen[SCREEN_HEIGHT][SCREEN_WIDTH];

int main(int argc, char* argv[])
{
    int height = 10;
    int x = 1, y = 10;

    int i, j;
    for(i=0; i<height; i++){
        for(j=-i; j<=i; j++){
            screen[x+i][y+j]='*';
        }
    }    

    for(i=0; i<SCREEN_HEIGHT; i++) {
        for(j=0; j<SCREEN_WIDTH; j++) {
            printf("%c", screen[i][j]==0 ? ' ' : '*');
        }
        printf("\n");
    }

}

但你的x和y轴看起来是相反的。 X通常是左右和Y - 上下。