I'm trying to write a program that accepts user input for a file name. From there it stores the numbers in the file into an array, sorts them, then displays them. However, i'm getting large numbers similar to accessing an out-of-bounds array, but I can tell from the debugger i'm not.
  #include <iostream>
using namespace std; 
class TestScores
{ 
public:
    TestScores();
    TestScores(int scores);
    ~TestScores();
    void AddScore(int newScore);
    void DisplayArray();
    void SortScores();
    bool ArraySorted();
    int AvgScore();
private:
    int *scoresArray;  //Dynamically allocated array 
    int numScores;  //number of scores input by user
    int scoreCounter;
    const static int default_NumArrays=10; //Default number of arrays
};
#include <iostream>
#include "TestScores.h"
TestScores::TestScores()
{
    scoresArray=new int[default_NumArrays];
    scoreCounter=0;
    numScores=default_NumArrays;
}
TestScores::TestScores(int scores)
{
    scoresArray=new int[scores];
    numScores=scores;
    scoreCounter=0;
    for(int i=0; i<scores;i++)
        scoresArray[i]=0;
}
TestScores::~TestScores()
{
    delete[] scoresArray;
}
void TestScores::AddScore(int newScore)
{
    if(scoreCounter<numScores){
        scoresArray[scoreCounter]=newScore;
        scoreCounter++;
    }
    else
        cout<<"More scores input than number of scores designated"<<endl;
}
void TestScores::DisplayArray()
{
    for(int i=0; i<numScores; i++)
        cout<<scoresArray[i]<<endl;
    cout<<endl<<"This is scoresArray"<<endl;
}
bool TestScores::ArraySorted()
{
    for(int i=0; i<(scoreCounter-1);i++){
        if(scoresArray[i]<=scoresArray[i+1])
            continue;
        else
            return false;
    }
    return true;
}
void TestScores::SortScores()
{
    int tempValue;
    while(ArraySorted()!=true){
        for(int i=0; i<(scoreCounter-1); i++){
            if(scoresArray[i]<=scoresArray[i+1])
                continue;
            else{
                tempValue=scoresArray[i+1];
                scoresArray[i+1]=scoresArray[i];
                scoresArray[i]=tempValue;
            }
        }
    }
}
int TestScores::AvgScore()
{
    int sumScores=0;
    if(scoreCounter>0){
        for(int i=0; i<scoreCounter; i++)
            sumScores+=scoresArray[i];
        return (sumScores/scoreCounter);
    }
    else{
        cout<<"There are no scores stored."<<endl;
        return 0;
    }
}
#include "TestScores.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std; 
//Function prototypes
bool FileTest(ifstream& inData);
void StoreScores(ifstream& inData, int& newNumScores, TestScores satScores);
int main()
{   
    int newNumScores=0;
    string inputFile;   //Contains name of the user file being used
    //Opening file stream
    ifstream inData;
    //User prompt for input file
    cout<<"Please enter the file name containing the student scores you wish to "
        <<"have stored, sorted, and displayed."<<endl;
    cin>>inputFile;
    //Opening file streams
    inData.open(inputFile.c_str());
    while(FileTest(inData)==false){
        cout<<"I'm sorry, the file you entered was not a valid file.  "
            <<"Please enter another file name, or enter q to exit"<<endl;
        cin>>inputFile;
        if(inputFile=="q")
            return 0;
        //Opening file streams
        inData.open(inputFile.c_str());
    }
    inData>>newNumScores;  
    TestScores satScores(newNumScores);   //Instantiating TestScores variable
    StoreScores(inData, newNumScores, satScores);  //Storing scores into array
    satScores.DisplayArray();
    satScores.SortScores();
    satScores.DisplayArray();
    cout<<endl<<"This is the array after sorting"<<endl<<endl;
    cout<<"This is the average score "<<satScores.AvgScore()<<endl;
    //Program pauses for user input to continue
    char exit_char; 
    cout<<"\nPress any key and <enter> to exit\n";
    cin>>exit_char;
    inData.close();
    return 0;   
}
bool FileTest(ifstream& inData)
{
    if(!inData)
    {
        cout<<"Your file did not open.\n";
        return false;
    }
    return true;
}
void StoreScores(ifstream& inData, int& newNumScores, TestScores satScores)
{   
    int userScore;
    while(inData>>userScore){
        satScores.AddScore(userScore);
    }
}
My test file is random.dat and contains the following:
15
67
76
78
56
45
234
Based on looking through the debugger, I can tell that scoreCounter is incrementing correctly and that newScore contains the next value, so why isn't it being stored in the array? Thanks for the help
 
     
     
    