Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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_Sorting - Fatal编程技术网

C 正在努力将数据从阵列传递到另一个阵列

C 正在努力将数据从阵列传递到另一个阵列,c,arrays,sorting,C,Arrays,Sorting,所以我在C代码中遇到了数组问题。我认为问题并不严重,但在我的代码上工作了48个小时之后,我真的看不透。 这就是我的问题:我得到了一个名为path的函数,它可以在迷宫中找到两个给定点之间的最短路径。该函数返回一个名为stepcount的int变量。在这里,我存储了从一个点到另一个点所需的步骤数。该信息存储在一个名为“comb”的数组中。这个数组是二维的 agents = atoi( argv[4] ); int k=0; unsigned int num = agents*agents; unsi

所以我在C代码中遇到了数组问题。我认为问题并不严重,但在我的代码上工作了48个小时之后,我真的看不透。 这就是我的问题:我得到了一个名为path的函数,它可以在迷宫中找到两个给定点之间的最短路径。该函数返回一个名为stepcount的int变量。在这里,我存储了从一个点到另一个点所需的步骤数。该信息存储在一个名为“comb”的数组中。这个数组是二维的

agents = atoi( argv[4] );
int k=0;
unsigned int num = agents*agents;
unsigned int comb[num][3];//Represents steps form one agent to the target ->
//[][1] = Startpoint; [][2] = Endpoint; [][3] = number of steps;
unsigned int distance[agents][3];

for(int i=0; i<agents; i++)
{
    for(int j=0; j<agents; j++)
    {
        stepcount=path(nodeAgents[i], nodeTargets[j]);
        comb[k][0]=i;
        comb[k][1]=j;
        comb[k][2]=stepcount;
        k++;
    }
}

for(int i=0; i<num; i++)
{
    printf("%d. Steps from Agent %d to Target needed %d: %d\n",i, comb[i][0],comb[i][1],comb[i][2]);
}
agents=atoi(argv[4]);
int k=0;
unsigned int num=代理*代理;
无符号整数梳[num][3]//表示从一个代理到目标的步骤->
//[][1]=起始点;[[2]=终点;[][3]=步数;
无符号整数距离[agent][3];

对于(inti=0;我也是如此,
comb[k][0]=i
(和其他)不应该是
comb吗[>>>j@Ryyker:我知道我的代码不是最漂亮的,但我知道这段代码正在运行。我以前已经使用过这类代码。所以我认为问题应该出在第二段代码中。@iharob:缓冲区溢出是什么意思?好的,但是
I+代理
不能做到这一点,应该是
I+=agents
在@iharob,stat之后MENT
i+2
与语句
i
没有更多的后果。您需要
i+=2
for(int i=0; i<num; i+agents)
{
    for(int j=k; j<agents; j++)
    {
        if(comb[j+i][2]<comb[j+i+1][2])
        {
            distance[j][0] = i;
            distance[j][1] = j;
            distance[j][2] = comb[j+i][2];
        }
    }
}

for(int i=0; i<agents; i++)
{
    int j = distance[i][0];
    int x = distance[i][1];
    int y = distance[i][2];
    printf("%d. Nearest Target to Agent %d is Target %d. The number of steps needed is %d\n", i, j, x, y);
}