weixin_55105890 2023-05-10 12:59 采纳率: 50%
浏览 28

c++初学者问题,关于生命游戏

c++初学者问题想自己去做一个生命游戏模型,但是自己写了代码之后发现这里有一个地方总是报错,无法运行,不知道怎么回事求指点。

img

#include<ctime>
#include<sm.h>
#include<stdlib.h>
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
    double  **p;
    cout << "输入矩阵的行数和列数(这里默认行数和列数一致)";
    cin >> x;
    p = new double* [x];
    for (int i = 0; i < x; i++)
    {
        p[i] = new double[x];
    }
    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < x; j++)
        {
            {
                p[i][j] = rand() % 2;
                cout << p[i][j];

            }
        }
        cout << endl;
    }
    cout << "这里输入你想要运行程序的次数";
    cin >> z;
    while (y < z)
    {
        y = 0;
        int count = 0;
        for (int i = 0; i < x; i++)
        {
            for (int j = 0; j < x; j++)
            {
                if (p[i + 1][j + 1] == 0 && i + 1 < 10 && j + 1 < 10)
                    count++;
                if (p[i + 1][j] == 0 && i + 1 < 10)
                    count++;
                if (p[i + 1][j - 1] == 0 && i + 1 < 10 && j - 1 > 0)
                    count++;
                if (p[i][j + 1] == 0 && j + 1 < 10)
                    count++;
                if (p[i][j - 1] = 0 && j - 1 > 0)
                    count++;
                if (p[i - 1][j] == 0 && i - 1 > 0)
                    count++;
                if (p[i - 1][j - 1] == 0 && i - 1 < 10 && j - 1 < 10)
                    count++;
                if (p[i - 1][j + 1] == 0 && i - 1 < 10 && j + 1 > 0)
                    count++;


                if (count >= 7 && p[i][j] == 1)
                    p[i][j] = 0;
                if (count == 6 || count == 7 && p[i][j] == 1)
                    p[i][j] = 0;
                if (count >= 4 && p[i][j] == 1)
                    p[i][j] = 0;
                if (count == 3 && p[i][j] == 0)
                    p[i][j] = 1;
                if (count != 3 && p[i][j] == 0)
                    p[i][j] = 0;
            }
        }
        for (int i = 0; i < x; i++)
        {
            for (int j = 0; j < x; j++)
            {
                cout << p[i][j];
            }
            cout << endl;
        }
        y++;
    }
}


``
  • 写回答

2条回答 默认 最新

  • threenewbee 2023-05-10 13:17
    关注

    if (p[i - 1][j] == 0 && i - 1 > 0)
    这里下标越界,很可能是因为你的i是0,导致i-1为负数了

    评论

报告相同问题?

问题事件

  • 修改了问题 5月10日
  • 修改了问题 5月10日
  • 修改了问题 5月10日
  • 创建了问题 5月10日

悬赏问题

  • ¥15 如果要做一个老年人平板有哪些需求
  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环