### sort with pointer new float[M]

 ``12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364`` ``````// Test Averaging. #include #include using namespace std; int main(){ float* ScorePointer; int M; float ValueHolder; int PlaceHolder; int n1, n2; float total; // Array creation. cout << "Enter number of tests to score." << endl; cin >> M; cout << endl; ScorePointer = new float[M]; if (ScorePointer == 0){ cout << "Invalid." << endl; exit(0); } // Test score input. for (n1 = 0; n1 < M; n1++){ cout << "Enter score for test " << n1 + 1 << endl; cin >> ScorePointer[n1]; if (ScorePointer[n1] < 0){ cout << "Invalid test score entry." << endl; exit(0); } } // Sorting ascending order. if (M > 1){ for (n1 = 0; n1 < M -1; n1++){ ValueHolder = ScorePointer[n1]; PlaceHolder = n1; for (n2 = 1; n2 < M; n2++){ if (ScorePointer[n2] < ValueHolder){ ValueHolder = ScorePointer[n2]; PlaceHolder = n2; } } ScorePointer[PlaceHolder] = ScorePointer[n1]; ScorePointer[n1] = ValueHolder; } } cout << endl << "Test score list :" << endl; for (n1 = 0; n1 < M; n1++){ cout << ScorePointer[n1] << endl; } // Average all scores. total = 0; for (n1 = 0; n1 < M; n1++){ total += ScorePointer[n1]; } cout << endl << "The average of all scores is " << total / M << endl; delete [] ScorePointer; return 0; }``````

This seems simple enough, but the sort is not working. Am I making a simple mistake I do not see or do I have to treat sorting differently after dynamically allocating an array?

I am to:
1. Create an array by dynamic allocation, and store in it test scores.
2. Sort the test scores.
3. Calculate the average score.

Everything works except that the sort does not happen correctly.
Last edited on
Can you tell us your example expected program output that you should have?
Tell more the problem that currently makes you sad.
The output makes me sad because for example if I say I want to enter 5 test scores with scores of 1, 2, 3, 4, 5 (already in ascending order, but that doesn't matter really), the program sorts these into 1, 3, 4, 2, 5. Actually it seems to always order the numbers like that so the first number is always the lowest while the second to last number is always next lowest, then the second number in the output list is the third lowest and so on. I don't see why it should be like that but that is what happens.

... Okay, not always in that order I guess. It still doesn't sort correctly.
Last edited on
I still haven't figured this out. My experiments with pointers suggest this should work. I am sorry I just realized there is an output format. Sorry I didn't use it earlier. Again, the thing that should happen which does not is that after entering the test scores, the program should sort them from lowest to highest. All it seems to do is shuffle them which really would be cool if that was what I was trying to do, but alas !cool.

Sample output.

Sample 1:
 ```Enter number of tests to score. 5 Enter score for test 1 3 Enter score for test 2 4 Enter score for test 3 7 Enter score for test 4 5 Enter score for test 5 1 Test score list : 1 7 5 3 4 The average of all scores is 4```

Sample 2:
 ```Enter number of tests to score. 5 Enter score for test 1 33 Enter score for test 2 75 Enter score for test 3 99 Enter score for test 4 865 Enter score for test 5 101 Test score list : 33 99 865 75 101 The average of all scores is 234.6```

Sample 3:
 ```Enter number of tests to score. 9 Enter score for test 1 204 Enter score for test 2 333 Enter score for test 3 298 Enter score for test 4 102 Enter score for test 5 336 Enter score for test 6 12 Enter score for test 7 1 Enter score for test 8 992 Enter score for test 9 93 Test score list : 1 298 102 336 333 204 992 12 93 The average of all scores is 263.444```

Again, what I was expecting to get was:

Desired sample one output:
 ```blah, blah, blah Test score list : 1 3 4 5 7 blah blah average blah```

Desired sample two output:
 ```blah blah blah Test score list: 33 75 99 101 865 blah blah average blah```

Desired sample three output:
 ```blah blah blah Test score list: 1 12 93 102 204 298 333 336 992 blah blah average blah```
Last edited on
If think that the 2nd loop (with n2) should start at n1+1 and not 1.
Last edited on
OMG! Thank you so much! I've been depressed over this problem for days questioning whether I really understood anything. Does 1+1 really equal 2? Does it?!? Then why doesn't the computer believe you!
Topic archived. No new replies allowed.