三角形图案居中

时间:2010-12-13 02:08:06

标签: geometry

我想在c ++中创建一个看起来像三角形(或半个钻石)的图案 使用星号:模式应该有1,2,3,4,并以5星这样结束

  *
  **
 ***
 ****
*****

(但直!) 我的代码如下:

-`#包括 using namespace std; int main() {

int size;
cout<<"size:"<<endl;
cin>>size;

int blank=size/2;
int newsize=1;
for (int i=0; i<=size/2; i++)
{
    for(int j=blank;j>0;j--)
        cout <<" ";
    blank--;
    for(int j=newsize; j>0; j--)
        cout <<"*";
    newsize+=2;
    cout <<endl;
}


return 0;

} ` 我唯一的问题就是它会像这样显示1,3和5星。

  *
 ***
*****

它只是一个小问题,但我已经改变了代码的不同部分 我似乎没有做对。

有什么建议吗?

感谢 :)

3 个答案:

答案 0 :(得分:0)

我不确定你的意思是“但是直接”,所以我暂时忽略它......

blank开始与size相同的值,这样您每次都可以递减值而不必递减一半:

int blank=size;

循环到size而不是size/2以获得更多行:

for (int i=0; i<=size; i++)

在空格循环中减去2,得到空格数的一半:

for(int j=blank;j>0;j-=2)

将大小增加一而不是两次以获得更慢的增长:

newsize++;

这应该产生你显示的输出。

编辑:

我测试了这个以确定,输出是:

   *
  **
  ***
 ****
 *****
******

要获得您要求的确切输出,请先填空白:

int blank=size - 1;

答案 1 :(得分:0)

我说得对吗:你想在角色的边界上放一些星号吗?如果是这样,那是不可能的。当以等宽字体显示时,每个星号(或任何其他符号)将位于字符位置的中间,如网格中。您可以在单元格中放置星号,但不能在网格的边框上放置星号。

答案 2 :(得分:0)

int NUMLINES = 5;

void display(int, char);

void main(){
for (int i=1; i<= NUMLINES; ++i){
    display((NUMLINES + 1 - i), ' ');
    display(( 2 * i - 1 ), '*');
    cout << endl;
}

}
void display (int howmany, char symbol){
for (int i = 1; i<=howmany; ++i)
 cout << symbol;
}