这些题目都是个人写的,肯定会有很多问题,欢迎指出错误。
10-0 编译,运行并测试本章中的例程。 < 略>
10-1 重写9.6节的学生成绩,可以生成字母成绩。
由于是要修改书上的代码,代码比较长,而且直接就将老师给的书上的源代码拿来进行了写修改,老师给的课本源代码是多文件,所以这里也用的是多文件。
median.h
#ifndef GUARD_median_h
#define GUARD_median_h
#include <algorithm>
#include <stdexcept>
#include <vector>
using std::domain_error;
using std::sort;
using std::vector;
template <class T>
T median(vector<T> v)
{
typedef typename vector<T>::size_type vec_sz;
vec_sz size = v.size();
if (size == 0)
throw domain_error("median of an empty vector");
sort(v.begin(), v.end());
vec_sz mid = size/2;
return size % 2 == 0 ? (v[mid] + v[mid-1]) / 2 : v[mid];
}
#endif
grade.h
#ifndef GUARD_grade_h
#define GUARD_grade_h
// `grade.h'
#include <vector>
double grade(double, double, double);
double grade(double, double, const std::vector<double>&);
#endif
grade.cpp
#include <vector>
#include <stdexcept>
using std::domain_error;
using std::vector;
#include "grade.h"
#include "median.h"
// compute a student's overall grade from midterm and final exam grades and homework grade
double grade(double midterm, double final, double homework)
{
return 0.2 * midterm + 0.4 * final + 0.4 * homework;
}
// compute a student's overall grade from midterm and final exam grades
// and vector o