C++ 初学者的麻烦';s C++;生命游戏计划

C++ 初学者的麻烦';s C++;生命游戏计划,c++,C++,背景:我是个编程新手。到目前为止,我在《生活游戏》的草稿中已经提到了这一点: #include <iostream> using namespace std; int main() { //INTRODUCTION int arraySize; cout << "What is the length of your square-shaped grid? Enter an integer value greater than 0. Too

背景:我是个编程新手。到目前为止,我在《生活游戏》的草稿中已经提到了这一点:

#include <iostream>

using namespace std;

int main()
{

    //INTRODUCTION

    int arraySize;
    cout << "What is the length of your square-shaped grid? Enter an integer value greater than 0. Too big will cause problems.";
    cin >> arraySize;
    int original[arraySize][arraySize];

    //REQUESTS INPUT FOR ARRAY

    for (int n = 0; n < arraySize; n++)
    {
        for (int x = 0; x < arraySize; x++)
        {
            bool ValInput;
            cout << "\n" << n << "," << x << "...";
            cin >> ValInput;
            original[n][x] = ValInput;
        }
    }

    cout << "\n\n\n";

    //DISPLAYS ARRAY

    for (int row = 0; row < arraySize; row++)
    {
        for (int column = 0; column < arraySize; column++)
        {
            cout << original[row][column] << " ";
            if (column == arraySize - 1)
            {
                cout << "\n";
            }
        }
    }

    cout << "Next frame.\n\n";

    //FORMS NEXT FRAME WITH VALUES OF # OF LIVE NEIGHBORS

    int liveNeighbors = 0;

    for (int z = 0; z < arraySize; z++)
    {
        for (int h = 0; h < arraySize; h++)
        {
            liveNeighbors = 0;
            if (z - 1 > -1)
                liveNeighbors += original[z - 1][h];
            if (z + 1 < arraySize)
                liveNeighbors += original[z + 1][h];
            if (h - 1 > -1)
                liveNeighbors += original[z][h - 1];
            if (h + 1 < arraySize)
                liveNeighbors += original[z][h + 1];
            if (z - 1 > -1, h - 1 > -1)
                liveNeighbors += original[z - 1][h -1];
            if (z - 1 > -1, h + 1 < arraySize)
                liveNeighbors += original[z - 1][h + 1];
            if (z + 1 < arraySize, h - 1 > -1)
                liveNeighbors += original[z + 1][h - 1];
            if (z + 1 < arraySize, h + 1 < arraySize)
            {
                liveNeighbors += original[z + 1][h + 1];
            }
            cout << liveNeighbors << " ";

        }
    }

}
#包括
使用名称空间std;
int main()
{
//导言
内部阵列化;
排列;
int原件[arraySize][arraySize];
//请求数组的输入
对于(int n=0;ncout您的某些情况是错误的:

if (z - 1 > -1, h - 1 > -1) /* ... */
if (z - 1 > -1, h + 1 < arraySize) /* ... */
if (z + 1 < arraySize, h - 1 > -1) /* ... */
if (z + 1 < arraySize, h + 1 < arraySize) /* ... */
添加额外的括号只是为了可读性,它们不是必需的

正如您所知,这是逗号运算符的标准定义:

由逗号分隔的一对表达式从左到右求值,左表达式的值为 丢弃


在您的情况下,逗号左侧的比较在
if
条件中基本上没有任何作用。

您的一些条件是错误的:

if (z - 1 > -1, h - 1 > -1) /* ... */
if (z - 1 > -1, h + 1 < arraySize) /* ... */
if (z + 1 < arraySize, h - 1 > -1) /* ... */
if (z + 1 < arraySize, h + 1 < arraySize) /* ... */
添加额外的括号只是为了可读性,它们不是必需的

正如您所知,这是逗号运算符的标准定义:

由逗号分隔的一对表达式从左到右求值,左表达式的值为 丢弃


在您的情况下,逗号左侧的比较在
if
条件下基本上没有任何作用。

我认为您的问题在于此代码:

  if (z - 1 > -1, h - 1 > -1)
<>你的直觉在这里是完全正确的,但是你用代码写的这个方法并不意味着你想要什么。在C++中,逗号运算符是一个深奥的运算符,意思是“做两件事,但放弃第一次操作的结果”。“检查z-1是否大于-1,然后完全放弃该结果,然后查看h-1是否大于-1”,这完全不是您想要的。要检查并查看这两个条件是否都成立,请使用&&运算符:

if (z - 1 > -1 && h - 1 > -1)
这将有助于修复您的错误


希望这有帮助!

我认为您的问题在于以下代码:

  if (z - 1 > -1, h - 1 > -1)
<>你的直觉在这里是完全正确的,但是你用代码写的这个方法并不意味着你想要什么。在C++中,逗号运算符是一个深奥的运算符,意思是“做两件事,但放弃第一次操作的结果”。检查z-1是否大于-1,然后完全放弃该结果,然后查看h-1是否大于-1,“这根本不是您想要的。要检查并查看这两个条件是否都成立,请使用&&运算符:

if (z - 1 > -1 && h - 1 > -1)
这将有助于修复您的错误


希望这有帮助!

请准确地更新您的问题。“实时Nieghbor的数量只适用于中间的数据”只说明什么有效,而不是什么无效。您应该在问题中发布代码(而不是链接)如果你做不到的话,给我们一些确切的问题,如果你做不到的话。给我们一些样本输入和输出。请更新你的问题,确切地说你有什么问题。“活的NIGHBORs只适用于中间的数据。“只说行得通的,不说不行的”。你应该在你的问题中发布你的代码(而不是链接),然后发布一些更符合要求的内容,并准确地演示你遇到的问题。如果你不能做到这一点。给我们一些输入和输出示例。好的ol'逗号运算符再次出现。。。(考虑到C奇怪的运算符优先级,我不想依赖于可选的paren^^)好的ol'逗号运算符再次罢工…(考虑到C奇怪的运算符优先级,我不想依赖于可选的paren^^)