Jump to content

C++ programmers please help

Go to solution Solved by Unimportant,
3 hours ago, AndrewZ said:

<snip>

The index operator [] already dereferences the indexed element. Dereferencing it again results in the error.

if(scores[k] > scores[k+1])

You can also do arithmetic directly on pointers. So if you need a pointer there is no need to use index operator [] to dereference a index and then take it's address again.

swap(scores + k, scores + k + 1);

Although you should be using std::swap instead of rolling your own unless there's a good reason for it.

Hey everyone, I'm trying to implement bubble sort in c++ with the requirement that it uses pointers instead of regular arrays. I have the algorithm entered, but on the line where the if statement checks the if the current element is greater than the next element, I get the error, "Indirection requires pointer operand ('double' invalid)" If anyone knows what's causing this, please let me know, below is the code.

 

void sort(double *scores, int numberOfScores) {

    bool swapped;

    for(int i = 0; i < numberOfScores - 1; i++) {

        swapped = false;

        for(int k = 0; k < numberOfScores - i - 1; k++) {

            if(*(scores[k]) > *(scores[k+1])) {

                swap(&scores[k], &scores[k+1]);

                swapped = true;

            }

        }

        if (!swapped)

            break;

    }

}

Link to comment
https://linustechtips.com/topic/1058626-c-programmers-please-help/
Share on other sites

Link to post
Share on other sites

3 hours ago, AndrewZ said:

<snip>

The index operator [] already dereferences the indexed element. Dereferencing it again results in the error.

if(scores[k] > scores[k+1])

You can also do arithmetic directly on pointers. So if you need a pointer there is no need to use index operator [] to dereference a index and then take it's address again.

swap(scores + k, scores + k + 1);

Although you should be using std::swap instead of rolling your own unless there's a good reason for it.

Link to post
Share on other sites

On 4/27/2019 at 4:01 AM, Unimportant said:

The index operator [] already dereferences the indexed element. Dereferencing it again results in the error.


if(scores[k] > scores[k+1])

You can also do arithmetic directly on pointers. So if you need a pointer there is no need to use index operator [] to dereference a index and then take it's address again.


swap(scores + k, scores + k + 1);

Although you should be using std::swap instead of rolling your own unless there's a good reason for it.

Thank you thank you

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×