我正在编写一些我正在编写的代码问题。 我经常使用这个网站,因为我发现很多人已经问过我想知道的相同问题。有了这个,我想感谢社区在这里所有以前对我的编程难题的见解。 (在我们走得太远之前,这不是一个'学校项目'或'学校作业',我只是想解决'旅行推销员问题'并提高我的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时,我正在传递一个带数组的指针数组? 我知道编译错误与指针有关,但我不确定它们应放在何处。 任何和所有帮助将不胜感激。 非常感谢, 亚历
答案 0 :(得分:1)
在这里,您要将数组指针与int值进行比较
if(totalCost <= cheepestTrip)
例如,您应该将它与该数组的元素进行比较
if(totalCost <= cheepestTrip[0])
答案 1 :(得分:1)
cheepestTrip
是数组的名称,相当于指向第一个元素的指针。 totalCost
是int
。只需从代码顶部的声明中删除[20]
即可。
答案 2 :(得分:1)
明确其他一些回复的含义:您有两个名称相同但类型不同的变量:
int cheepestTrip; /* This is an single integer... */
和
int cheepestTrip[20]; /* ...but this is an array of integers. */
这应该在编译时触发警告(可能是关于重新声明现有变量的事情)。
答案 3 :(得分:0)
您正在比较指向int的指针,您的特定编译器可能不允许这样做(尽管我可以使用C)。但是cheapestTrip本质上是指向你的int数组中第一个元素的指针,而totalcost只是一个int primative