summaryrefslogtreecommitdiff
path: root/CPP/cpp_book/chap6/grade.cpp
blob: 0a08217841dd193d677d75418dfe5709eb9fd644 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <vector>
#include "student_info.h"
#include "median.h"
#include "grade.h"

double grade(double midterm, double final, double homework)
{
	return (midterm * 0.2 +
		final * 0.4 +
		homework * 0.4);
}

/* Overloads above grade() */
double grade(double midterm, double final, const std::vector<double>& hw)
{
	if (hw.size() == 0)
		throw std::domain_error("Student has no homework");

	return grade(midterm, final, median(hw));
}

double grade(const StudentInfo& s)
{
	return grade(s.midterm, s.final, s.homework);
}