aboutsummaryrefslogtreecommitdiff
path: root/week07/ex3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'week07/ex3.cpp')
-rw-r--r--week07/ex3.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/week07/ex3.cpp b/week07/ex3.cpp
new file mode 100644
index 0000000..a616dc3
--- /dev/null
+++ b/week07/ex3.cpp
@@ -0,0 +1,36 @@
+#include <iostream>
+
+double abs(double val) {
+ return (val > 0) ? val : -val;
+}
+
+double square(double val) {
+ return val * val;
+}
+
+double afterFloatingPoint(double val) {
+ return val - (int)val;
+}
+
+double beforeFloatingPoint(double val) {
+ return (int)val;
+}
+
+int main() {
+ double (*useFunc)(double);
+ char buf;
+ std::cin >> buf;
+ switch(buf) {
+ case 'a': useFunc = &abs; break;
+ case 's': useFunc = &square; break;
+ case 'h': useFunc = &afterFloatingPoint; break;
+ case 'f': useFunc = &beforeFloatingPoint; break;
+ }
+
+ for (int i = 0; i < 5; i++) {
+ double temp;
+ std::cin >> temp;
+ std::cout << useFunc(temp) << " ";
+ }
+ std::cout << std::endl;
+}