-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfunctor.cpp
More file actions
29 lines (26 loc) · 823 Bytes
/
functor.cpp
File metadata and controls
29 lines (26 loc) · 823 Bytes
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
28
29
#include <iostream>
#include <cmath>
class DivideCeiling {};
class DivideFloor {};
class DivideNearest {};
class DivideToInt {
double divisor, dividend;
public:
DivideToInt(double divisor, double dividend)
: divisor{ divisor }, dividend{ dividend } {}
int operator()(const DivideCeiling&) {
return ceil(divisor / dividend);
}
int operator()(const DivideFloor&) {
return floor(divisor / dividend);
}
int operator()(const DivideNearest&) {
return round(divisor / dividend);
}
};
int main() {
DivideToInt division(7.0, 3.3);
std::cout << "ceil(7.0 / 3.3) = " << division(DivideCeiling{}) << '\n';
std::cout << "floor(7.0 / 3.3) = " << division(DivideFloor{}) << '\n';
std::cout << "round(7.0 / 3.3) = " << division(DivideNearest{}) << '\n';
}