AbsoluteZ3r0
AbsoluteZ3r0

Reputation: 119

Passing 2d arrays and then not getting a value

I am having an issue with some code that I am writing. I use this site often as I have found many people who have already asked the same questions I am wondering. With that I want to thank the community on here for all of the previous insight into my programming conundrums. (And before we get too far, no this is not a 'school project' or 'school homework', I am simply trying to solve the 'Travelling Salesman Problem' and better my C skills.

This is the portion of code I have been stuck on:

   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];
    }
}

To make it easier to show where my compile errors are at I put exclamation points on the lines. Please tell me if I am wrong, but I am passing an array of pointers with an array when I send 'arrayone' to printANDFlip right? I know the compile errors are relating to the pointers but I am just uncertain of where they should be placed. Any and all help will be appreciated. Much thanks, Alex

Upvotes: 1

Views: 66

Answers (4)

neilr8133
neilr8133

Reputation: 152

To make explicit what some of the other replies are saying: You have two variables with the same name but different types:

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

and

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

This should be triggering a warning at compile time (probably something about redeclaring an existing variable).

Upvotes: 1

naxchange
naxchange

Reputation: 913

cheepestTrip is the name of the array, which is equivalent to a pointer to the first element. totalCost is an int. Just remove the [20] from your declaration at the top part of the code.

Upvotes: 1

75inchpianist
75inchpianist

Reputation: 4102

you are comparing a pointer to an int, which your particular compiler might not be allowing (though I though with C you could). but cheapestTrip is essentially a pointer to the first element in your array of ints, while totalcost is simply an int primative

Upvotes: 0

user1944441
user1944441

Reputation:

Here you are comparing an array pointer with a int value

if(totalCost <= cheepestTrip)

For example you should compare it to an element of that array

  if(totalCost <= cheepestTrip[0])

Upvotes: 1

Related Questions