1

我有一个任务,我必须在 C++ 中创建一个控制台程序,以给定的样式绘制六边形。我遇到的问题是;我的 For 循环从未进入,我不知道为什么。这是我遇到问题的代码片段。

    void display()
{
    int counter=0;//var that keeps track of the layer that is being drawn
    for(int i=0;i>=size;i++)//spaces before first layer of hexagon
    {
        cout<<" ";
    }
    for (int k=0; k>size;k++)//top layer of hexagon
    {
        cout<<"_";
    }
    cout<<endl;//ends the first layer
    for (counter; counter>=size-1;counter++)//outer loop for the top half that controls the size
    {
        for( int j=0;j>(size-counter);j++)//adds spaces before the shape
        {
            cout<<" ";
        }
        cout<<"/";
        for( int p=0; p>(size+(counter*2));p++)//loop for the hexagon fill
        {
            cout<<fill;
        }
        cout<<"\\"<<endl;
    }
    for(counter;counter==0;counter--);  //loop for bottom half of the hexagon
    {
        for( int j=0;j>(size-counter);j++)//adds spaces before the shape
        {
            cout<<" ";
        }
        cout<<"\\";
        for( int p=0; p>(size+(counter*2));p++)//loop for the hexagon fill
        {
            cout<<fill;
        }
        cout<<"/"<<endl;
    }
    cout<<"\\";
    for(int r=0; r>=size;r++){cout<<"_";}
    cout<<"/"<<endl;

}

'Size' 和 'fill' 是在我的 main() 期间在程序的早期选择的,我可能遗漏了一些非常简单的东西,但我已经为此苦苦挣扎了一段时间。任何帮助将不胜感激!

4

6 回答 6

4

您的循环使用>并从 0 开始。看来您想要的是<。例如

for(int i=0;i<size;i++)//spaces before first layer of hexagon
{
    cout<<" ";
}
于 2012-11-05T16:07:22.663 回答
3

我不确定你的size变量的内容是什么,但看起来你的循环条件错误:

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

可能应该是:

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

其他循环也是如此。

于 2012-11-05T16:09:45.057 回答
1

假设你size是一个正数,它会根据你的情况工作。>将conditojs更改为<您的条件。

于 2012-11-05T16:07:47.113 回答
1

在您的条件下,将 > 反转为 <

< 表示劣势,你想做一个

for i = 0; if i < size; i++

你做

for i = 0 ; if i > size ; i ++ 

如果 size 优于 i (0) 则循环永远不会触发

于 2012-11-05T16:08:01.600 回答
1

你的 < 和 > 不是全部颠倒了吗?因为

(int k=0; k>size;k++)

对我来说没有意义。

于 2012-11-05T16:08:22.397 回答
1

forC++ 中的循环是while循环,而不是until循环。

C++ 只有while循环(含义为as long):

for (int i=0; i<10; ++i)
    ....


int i=0;   
while (i<10) {
    ....
    ++i;
}
于 2012-11-05T16:08:26.400 回答