c -传递二维数组,然后没有得到一个值



我正在编写一些代码的问题。我经常使用这个网站,因为我发现很多人已经问过我想知道的同样的问题。在此,我要感谢这里的社区,感谢他们之前对我的编程难题的所有见解。(在我们走得太远之前,不,这不是"学校项目"或"学校作业",我只是想解决"旅行推销员问题",提高我的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];
    }
}

为了更容易地显示我的编译错误在哪里,我在行上加了感叹号。请告诉我,如果我错了,但我传递一个数组的指针数组当我发送'arrayone'到printANDFlip对吗?我知道编译错误与指针有关,但我只是不确定它们应该放在哪里。任何和所有的帮助将不胜感激。太多的谢谢,亚历克斯

明确一些其他回复的意思:您有两个名称相同但类型不同的变量:

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

int cheepestTrip[20];  /* ...but this is an array of integers. */

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

这里比较的是数组指针和int值

if(totalCost <= cheepestTrip)
例如,你应该将它与数组 中的一个元素进行比较
  if(totalCost <= cheepestTrip[0])

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

您正在将指针与int进行比较,您的特定编译器可能不允许(尽管我认为使用C可以)。但是cheapestTrip实际上是指向整型数组中第一个元素的指针,而totalcost只是一个int型原语

相关内容

  • 没有找到相关文章

最新更新