首页 > 解决方案 > 程序仅从文件中读取 15 个整数中的 6 个

问题描述

从 .data 文件读取时,我的程序只会读取 15 个数字中的 6 个,但是当它从 .txt 文件读取时,它将读取所有数字。我需要它从 .data 文件中读取所有 15 个数字。

这是代码:

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 文件。

标签: c++visual-c++

解决方案


推荐阅读