# include <iostream>
#include <iomanip>
#include <string>
#include<vector>
# include <algorithm>
# include<stdexcept>//定义了异常类型 domain_error
using namespace std;
//查找中值
double median(vector <double> vec)
{
typedef vector <double>::size_type vec_size;
vec_size size = vec.size();
//如果向量为空,抛出异常
if (size == 0)
{
throw domain_error("empty");
}
sort(vec.begin(), vec.end());
vec_size mid = size / 2;
return size % 2 == 0 ? (vec[mid] + vec[mid - 1]) / 2 : vec[mid];
}
//计算成绩
double grade(double midterm, double final, double homework)
{
return 0.2 * midterm + 0.4 * final + 0.4 * homework;
}
//const vector<double>对参数类型为double的向量常量的引用
//引用是指 一个特定对象的另外一个名称
double grade(double midtern, double final, const vector<double>& hw)
{
if (hw.size == 0)
{
throw domain_error("students have no hw");
}
return grade(midtern, final, median(hw));
}
//读一个输入流,把家庭作业成绩读进一个vector<double>类型的向量中
istream& read_hw(istream& in, vector<double>& hw)
{
if (in)
{
//清除原先的内容
hw.clear();
//读家庭作业
double x;
while (in >> x)
{
hw.push_back(x);
}
in.clear();
}
Accelerated C++ 笔记 第4章 组织程序和数据
最新推荐文章于 2020-10-20 16:54:08 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)