• 7.使用中位数而不是平均值。


    如果我们要用中位数来确定课后成绩。

    第一:我们需要存储所有的课后成绩,而不是跟计算平均值一样,只存储总成绩。

    第二:我们需要对成绩排序。找到中位数。

    要计算中位数,我们必须阅读并存储所有的课后作业分数,然后进行排序,最后选择中间(或两个)。 为了方便而有效地进行这种计算,我们需要一种方法:

    1)我们需要储存所有的值,但是我们不知道有多少值。

    2)高效的取得中间值。

    标准模板库提供了一种类型:vector,能轻松解决所有问题。

    #include <iostream>
    #include <string>
    #include <iomanip>
    #include <vector>
    #include <algorithm>
    
    
    
    using namespace std;
    
    
    int main()
    {
        string name;
        cout << "What's your name: ";
        cin >> name;
        cout << "Hello, " << name << "!" << endl;
    
        double finalGrade, middleGrade;
        cout << "Please enter your midterm and final exam grades: ";
        cin >> middleGrade >> finalGrade;
    
        vector<double> homework;
        cout << "Enter all your homework grades, followed by end-of-file:";
        double x;
        while(cin >> x) {
            homework.push_back(x);
        }
    
        if(homework.size() == 0)
        {
            cout << "No homework, try again!" << endl;
            return 1;
        }
    
        sort(homework.begin(), homework.end());
    
        double median;
        int size = homework.size();
        int mid = size / 2;
        median = (size % 2 == 0 ? (homework[mid]+homework[mid-1]) / 2 : homework[mid]);
    
        streamsize prec = cout.precision();
        cout << "Your final grade is " << setprecision(3)
             << 0.2 * middleGrade + 0.4 * finalGrade + 0.4 * median
             << setprecision(prec) << endl;
    
          
        system("pause");
        return 0;
    }

    1.vector是一种容器类,重载了[]操作符,[]操作符可以直接获取vector对应位置的值,就像数组一样。

    2.sort是algorithm头文件的函数,适用于各种容器,用来排序。

  • 相关阅读:
    michael的沟通秘籍
    panels能否包含views_block ////// panels -- content pane 参数传递
    Unity动画
    DoTween动画插件学习
    C#委托的进一步学习
    阶段学习总结-坦克大战(2D)案例
    学习总结
    阶段学习总结-见缝插针案例
    阶段学习总结-坦克大战案例
    碰撞检测和触发检测
  • 原文地址:https://www.cnblogs.com/billxyd/p/7029513.html
Copyright © 2020-2023  润新知