Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 以螺旋方式修改数组_C++_Arrays_Spiral - Fatal编程技术网

C++ 以螺旋方式修改数组

C++ 以螺旋方式修改数组,c++,arrays,spiral,C++,Arrays,Spiral,我试图让它以螺旋的顺序通过数组。当它找到2时,应将其替换为0,并且螺旋顺序中的下一个数字应为2。如果我的数组是 000 200 000 是应该成为的 000 020 000 变量ok告诉我是否找到了数字2,并简单地将下一个数字修改为2。请注意,它不会循环通过它。当它到达阵列的中心时,它停止,不会后退或重新开始 你知道为什么它不起作用吗?它根本不会修改我的数组 #include<iostream> using namespace std; #define ROWS 3 #defi

我试图让它以螺旋的顺序通过数组。当它找到2时,应将其替换为0,并且螺旋顺序中的下一个数字应为2。如果我的数组是

000
200
000
是应该成为的

000
020
000
变量ok告诉我是否找到了数字2,并简单地将下一个数字修改为2。请注意,它不会循环通过它。当它到达阵列的中心时,它停止,不会后退或重新开始

你知道为什么它不起作用吗?它根本不会修改我的数组

#include<iostream>
using namespace std;

#define ROWS 3
#define COLS 3

int main()
{
    int arr[ROWS][COLS] = {{2,0,0},
                           {0,0,0},
                           {0,0,0}};


    // Four direction counters of current movement
    // Horizontal right, vertical bottom, horizontal left and vertical top respectively
    int hr, vb, hl, vt, ok=0;

    // levl indicates current depth of our imaginary rectangle into array. Starting value is zero
    // since we are looping on the boundaries and ending value is the inner most rectangle

    int levl;
    for (levl=0; levl < COLS - levl; levl++)
    {
        for(hr=levl; hr < COLS-levl; hr++)   // go right
        {
            if (ok==1)
            {
                arr[levl][hr] == 2;
                ok = 2;
            }

            if ( (arr[levl][hr] == 2) && (ok == 0) )
            {
                arr[levl][hr] == 0;
                ok = 1;
            }

        }

        for(vb=levl+1; vb < COLS-levl; vb++) // go down
        {
            if (ok == 1)
            {
                arr[vb][hr-1] == 2;
                ok = 2;
            }

            if ( (arr[vb][hr-1] == 2) && (ok == 0) )
            {
                arr[vb][hr-1] == 0;
                ok = 1;
            }

        }

        for(hl=vb-1; hl-1 >= levl; hl--)  // go left
        {
            if ( ok == 1)
            {
                arr[vb-1][hl-1] == 2;
                ok = 2;
            }

            if ( (arr[vb-1][hl-1] == 2) && (ok == 0) )
            {
                arr[vb-1][hl-1] == 0;
                ok = 1;
            }


        }

        for(vt=vb-1; vt-1 > levl; vt--)  // go up
        {
            if (ok == 1)
            {
                arr[vt-1][hl] == 2;
                ok = 2;
            }

            if ( (arr[vt-1][hl] == 2) && (ok==0) )
            {
                arr[vt-1][hl] == 0;
                ok = 1;
            }


        }

    }

    cout << endl;
    for(int t = 0;t < 3;t++)
    {

        for(int u = 0;u < 3;u++)
            cout<<arr[t][u]<<" ";

        cout<<endl;
    }

    int a;
    cin>>a;

    return 0;
}
#包括
使用名称空间std;
#定义第3行
#定义COLS 3
int main()
{
int arr[ROWS][COLS]={{2,0,0},
{0,0,0},
{0,0,0}};
//电流运动的四向计数器
//分别为水平右侧、垂直底部、水平左侧和垂直顶部
int-hr,vb,hl,vt,ok=0;
//levl表示虚矩形在数组中的当前深度。起始值为零
//因为我们在边界上循环,结束值是最里面的矩形
国际水平;
for(levl=0;levl=levl;hl--)//向左走
{
如果(ok==1)
{
arr[vb-1][hl-1]==2;
ok=2;
}
如果((arr[vb-1][hl-1]==2)和&(ok==0))
{
arr[vb-1][hl-1]==0;
ok=1;
}
}
for(vt=vb-1;vt-1>levl;vt--)//上升
{
如果(ok==1)
{
arr[vt-1][hl]==2;
ok=2;
}
如果((arr[vt-1][hl]==2)和&(ok==0))
{
arr[vt-1][hl]==0;
ok=1;
}
}
}

cout数组没有被修改的原因是因为您使用的是“==”而不是“=”。所以

应该是

if ((arr[levl][hr] == 2)&&(ok==0))
{
    arr[levl][hr] = 0;
    ok=1;
}

==是一个比较运算符,并且=赋值。请仔细检查代码,使其更具可读性,因为您可能会发现这样的简单错误:)。

数组未被修改的原因是因为您使用的是“==”而不是“=”。因此

应该是

if ((arr[levl][hr] == 2)&&(ok==0))
{
    arr[levl][hr] = 0;
    ok=1;
}

==是一个比较运算符,=赋值。请仔细检查代码,使其更具可读性,因为您可能会发现这样的简单错误:)。

螺旋从何处开始?如果它从数组的“中心”开始,我不希望边缘上的元素移动到“中心”…另外,你的花括号很难理解…它从第一个元素开始,一直到中心。可能重复的我不想循环通过它,我想用0替换第一个2,用2替换下一个0。数组中满是0,只有一个数字2。螺旋从何处开始?如果它从数组的“中心”我不希望边缘上的元素移动到“中心”…还有,你的大括号很难理解…它从它的第一个元素开始,一直到中心。可能的重复我不想循环通过它,我想用0替换找到的第一个2,用2替换下一个0。数组中满是0,只有一个数字2。是的,就是这样。非常感谢。是的,就是这样是的,非常感谢。