summaryrefslogtreecommitdiffstats
path: root/ue5/mean_mark.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'ue5/mean_mark.hpp')
-rw-r--r--ue5/mean_mark.hpp42
1 files changed, 38 insertions, 4 deletions
diff --git a/ue5/mean_mark.hpp b/ue5/mean_mark.hpp
index f35910c..ba5a230 100644
--- a/ue5/mean_mark.hpp
+++ b/ue5/mean_mark.hpp
@@ -2,19 +2,53 @@
2#define MEAN_MARK_H 2#define MEAN_MARK_H
3 3
4#undef SOLVED_3 4#undef SOLVED_3
5//#define SOLVED_3 5#define SOLVED_3
6 6
7namespace Ti 7namespace Ti
8{ 8{
9 9
10 template <typename Iter> 10 template <typename Iter>
11 double mean_mark(Iter first, Iter last); 11 double mean_mark(Iter first, Iter last)
12 {
13 double result = 0;
14 unsigned count = 0;
15 for(; first != last; ++first)
16 {
17 result += (*first)->mark();
18 ++count;
19 }
20 return (count == 0) ? 0 : result / count;
21 }
12 22
13 template <typename Iter> 23 template <typename Iter>
14 double mean_mark_student(Iter first, Iter last); 24 double mean_mark_student(Iter first, Iter last)
25 {
26 double result = 0;
27 unsigned count = 0;
28 for(; first != last; ++first)
29 {
30 if (typeid(*(*first)) != typeid(Student))
31 continue;
32 result += (*first)->mark();
33 ++count;
34 }
35 return (count == 0) ? 0 : result / count;
36 }
15 37
16 template <class ForwardIterator> 38 template <class ForwardIterator>
17 ForwardIterator remove_greater (ForwardIterator first, ForwardIterator last, int mark); 39 ForwardIterator remove_greater (ForwardIterator first, ForwardIterator last, int mark)
40 {
41 ForwardIterator result = first;
42 for (; first != last; ++first)
43 {
44 if ((*first)->mark() <= mark)
45 {
46 *result = *first;
47 ++result;
48 }
49 }
50 return result;
51 }
18 52
19} 53}
20 54