Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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 传递2d数组,然后不获取值_C_Pointers_Multidimensional Array - Fatal编程技术网

C 传递2d数组,然后不获取值

C 传递2d数组,然后不获取值,c,pointers,multidimensional-array,C,Pointers,Multidimensional Array,我在写一些代码时遇到了问题。 我经常使用这个网站,因为我发现很多人已经问了我想知道的同样的问题。在此,我要感谢这里的社区,感谢他们对我编程难题的所有见解。 (在我们走得太远之前,不,这不是“学校项目”或“学校作业”,我只是想解决“旅行推销员问题”,提高我的C语言技能 这是我一直坚持的代码部分: void printAndFlip(int arrayone[][20], int citytotal, int arrayCities[]) { ////Finds cost: int x

我在写一些代码时遇到了问题。 我经常使用这个网站,因为我发现很多人已经问了我想知道的同样的问题。在此,我要感谢这里的社区,感谢他们对我编程难题的所有见解。 (在我们走得太远之前,不,这不是“学校项目”或“学校作业”,我只是想解决“旅行推销员问题”,提高我的C语言技能

这是我一直坚持的代码部分:

   void printAndFlip(int arrayone[][20], int citytotal, int arrayCities[])
   {

////Finds cost:
int x, y, z;
int totalCost
int singleTrip;
int cheepestTrip;
int nCity = citytotal + 1;      //nCity is the number of Cities //Adding one to accomadate going back to the first city
int gCounter;
int gCounterTrue = 1;
int cheepestTrip[20];
int totalCost = 0;
int lCounter;
int i;
int n = citytotal;


////Sets up for a default case to set cheepestTrip:
for(gCounter = 1; gCounter <= nCity; gCounter++)
{
    while(gCounterTrue == 1)
    {
        if(gCounter == arrayCities[gCounter])
        {
            gCounterTrue = 1;
        }
        else
        {
            gCounterTrue = 0;
            gCounter = 50;      //Stopping the larger for loop with 50 (the nCity can't be larger than 20) so that it will hopefully be faster
        }
        if(gCounter == nCity)
        {
            if(arrayCities[1] == arrayCities[nCity])
            {
!!!!!               cheepestTrip = totalCost;
            }
        }   
    }
}
for(x = 1; x < nCity; x++)
{
    y = arrayCities[x];
    z = arrayCities[x+1];
    singleTrip = arrayone[y][z];        //finding individual cost of each trip...will be added to 'totalCost' below
    totalCost = singleTrip + totalCost;
} 

!!!!!!!!  if(totalCost <= cheepestTrip)
{
    for(lCounter = 1; lCounter <= nCity; lCounter++)
    {
        cheepestTrip[lCounter] = arrayCities[lCounter];
    }
}
void print和flip(int arrayone[][20]、int citytotal、int arrayCities[]
{
////查找成本:
int x,y,z;
总成本
国际单程旅行;
国际旅行;
int nCity=citytotal+1;//nCity是城市数//添加一个以容纳返回到第一个城市的城市
int gCounter;
int gCounterTrue=1;
国际旅行社[20];
整数总成本=0;
国际计算器;
int i;
int n=城市总计;
////设置要设置的默认案例:

对于(gCounter=1;gCounter,这里比较的是数组指针和int值

if(totalCost <= cheepestTrip)

if(totalCost
cheepestTrip
是数组的名称,相当于指向第一个元素的指针。
totalCost
是一个
int
。只需删除
[20]
来自代码顶部的声明。

您正在比较指向int的指针,而您的特定编译器可能不允许使用int(尽管我认为使用C可以).但最便宜的Trip本质上是指向int数组中第一个元素的指针,而totalcost只是一个int primative

来明确说明其他一些答复所说的:您有两个名称相同但类型不同的变量:

int cheepestTrip;  /* This is an single integer... */


这应该在编译时触发警告(可能是关于重新声明现有变量的内容).

我为初学者程序员建议了一个问答网站。在那里,简单的问题应该以积极的态度来回答,并鼓励人们学习成为更好的程序员。如果你喜欢这个想法,就按照这个建议去做哦,天哪!我花了三个小时试图解决这个问题!我不敢相信它会那么简单!!!谢谢大家的帮助!
int cheepestTrip;  /* This is an single integer... */
int cheepestTrip[20];  /* ...but this is an array of integers. */