通过2d数组迭代和输出?

时间:2013-07-14 02:39:38

标签: c++ arrays

我正在尝试编写“Conways Game of Life”可视化。我想我对如何解决它有一个坚实的想法,但我遇到的问题是:当我尝试输出我的2d数组的行和列时,它开始在数字之间跳转到最后它永远不会停止滚动数字。它似乎陷入了78的“x”。

#include <iostream>
#include <cstring>
#include <cstdlib>
#define HEIGHT 25
#define WIDTH 80
using namespace std;

void makeBoard();
int seed = 0;

int main()
{
    makeBoard();
}

void makeBoard()
{
    int board[79][24] = {0};
    /* Seed the random number generator with the specified seed */
    srand(seed);
    for(int x = 0; x <= 79; x++)
    {
        for(int y = 0; y <= 24; y++)
        {
            /* 50% chance for a cell to be alive */
            if(rand() % 100 < 50)
            {
                board[x][y] = {1};
            }
            else
            {
                board[x][y] = {0};
            }
            /*if(board[x][y] == 1) {
                    cout << "SPAM" << endl;
                     }*/
                     //this is just printing out the current location it is iterating through.
            cout << "X: " << x << " Y: " << y << endl;
        }
        cout << endl;
    }
}

运行它所需的所有代码都应该就在那里。

感谢您的帮助和耐心。

2 个答案:

答案 0 :(得分:6)

你的指数超出范围。 [79] [24]的数组的索引从0到19和0-23。你的病情分别停留在79和24。将&lt; =与&lt;。

替换

答案 1 :(得分:0)

大小为N的数组从0到n-1。你需要替换&lt; = with&lt;,因为你的数组的每个维度的边界都用完了。

另请注意,您只有79列和24行,而不是您在程序顶部定义的80和25行。您可以通过执行以下操作来解决此问题:

int board[HEIGHT][WIDTH];

然后分别用高度和宽度代替79和24,并将环路条件中的&lt; =更改为&lt;。这样你只需要改变顶部的单个值来改变整个电路板的大小。