如何从数字输入文件中查找最大数字

时间:2019-04-04 19:22:34

标签: c++

我需要从测试成绩输入文件中找到最大测试成绩。测试分数以百分比列出,文本文件中每行一个。我只是不确定如何去做。现在,我的程序只读取数字并为其指定字母等级。

我想我可以将数字分配给数组,但是如果有一种方法可以不使用数组,那么我更愿意这样做。

string grade (double g) {
    string p;
    if (g >= 90) {
        p = "A";
    }
    if (g >= 80 && g < 90) {
        p = "B";
    }
    if (g >= 70 && g < 80) {
        p = "C";
    }
    if (g >= 60 && g < 70) {
        p = "D";
    }
    if (g < 60) {
        p = "F";
    }
    return p;
}
int main() {
    ifstream inData;
    try {
        inData.open("Scores.txt");
    }
    catch (int e) {
        return -1;
    }
    cout << "Percentage" << "   " << "Grade" << endl;
    cout << "-------------------" << endl;
    while (!inData.eof()) {
        double g;
        inData >> g;
        string p;
        p = grade (g);
        cout << "   " << g << "%" << "   --   " << p << endl;
    }
}

2 个答案:

答案 0 :(得分:2)

由于要流式传输数据,因此可以使用“比较并替换”类型的算法来跟踪最大得分。

首先,您将变量初始化为低于所有可能的分数,

double max_score_so_far = 0.0;

然后,每当您查看新分数时,您都会问:“这比我迄今为止所见过的最大分数还要大吗?”如果是这样,则将当前的最大值替换为当前值。

if (g > max_score_so_far) { max_score_so_far = g; }

在文件末尾,max_score_so_far的得分最高。

答案 1 :(得分:0)

尝试一下;

int main() {
    ifstream inData;
    try {
        inData.open("Scores.txt");
    }
    catch (int e) {
        return -1;
    }
    cout << "Percentage" << "   " << "Grade" << endl;
    cout << "-------------------" << endl;
    double maxScore=-1;
    double g;
    while (inData >> g) {
        maxScore=fmax(maxScore,g);
        string p;
        p = grade (g);
        cout << "   " << g << "%" << "   --   " << p << endl;
    }
    cout <<"Maximum Score" is<<maxScore << endl;
}