Программа только читает 6 из 15 дюймов из файла - PullRequest
0 голосов
/ 04 мая 2018

При чтении из файла .data моя программа будет читать только 6 из 15 чисел, но когда она читает из файла .txt, она будет читать все числа. Мне нужно, чтобы прочитать все 15 чисел из файла .data.

Вот код:

string PromptUser(void)
{ 
    ifstream infile;
    string filename; 
    cout << "Please enter a file name:" << endl;
    getline(cin, filename);
    while (!infile)
    {
        cout << "Please enter a file name:" << endl;
        getline(cin, filename);
    }
    return filename;
}

int ReadData(vector<int>& theData, ifstream& in)
{
    int value;

    if (in.is_open())
    {
        while (in >> value)
        {
            theData.push_back(value);
        }

        return 0;
    }
    else
    {
        return 1;
    }
}

void ComputeStats(vector<int>& theData, double& mean, double& median)
{
    double num = 0; 
    for (int val : theData)
    {
        num = num + val;
    }  
    if (theData.size() != 0)
    {
        mean = num / theData.size();
    }
    else
    {
        cout << "yeee" << " " << theData.size();
        exit(0);
    }
    int num2 = 0;
    sort(theData.begin(), theData.end());
    if (theData.size() % 2)
    {
        median = theData[(theData.size() / 2) + 1];
    }
    else
    {
        median = (theData[theData.size() / 2] + theData[theData.size() 
       /2])/2: 

     }

 }

void DisplayStats(int num, double mean, double median)
{
    cout << "********** Data Summary **********" << endl;
    cout << "Number of Values:   " << num << endl;
    cout << "Mean Value:         " << mean << endl;
    cout << "Median Value:       " << median << endl;
    cout << "**********************************" << endl;

}

int main()
{
    vector<int> theData;
    string filename;
    ifstream infile;

    filename = PromptUser();
    infile.open(filename);

    int rtn = ReadData(theData, infile);

    if (ReadData(theData, infile) == 1)
    {
        cerr << "The file could not be open " << endl;
        return 0;
    }
    infile.close();

    int numValues = theData.size();
    double meanValue, medianValue;

    ComputeStats(theData, meanValue, medianValue);

    DisplayStats(numValues, meanValue, medianValue);

    return 0;
}

файл .data содержит числа 23, 45, 9, 1, 09, 24, 23, 45, 81, 24, 9, 13, 9, 86 и 12. И файл .txt содержит те же номера , Но программа сообщает, что размер файла .data составляет всего 6, в то время как говорит, что файл .txt равен 15. Мне нужно, чтобы он прочитал файл .data прямо для класса, в котором я учусь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...