summaryrefslogtreecommitdiff
path: root/Year_1/Programming_1/ex13.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Year_1/Programming_1/ex13.cc')
-rw-r--r--Year_1/Programming_1/ex13.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/Year_1/Programming_1/ex13.cc b/Year_1/Programming_1/ex13.cc
new file mode 100644
index 0000000..f9f19fa
--- /dev/null
+++ b/Year_1/Programming_1/ex13.cc
@@ -0,0 +1,45 @@
+#include <iostream>
+#include <memory>
+#include <algorithm>
+#include <vector>
+using namespace std;
+
+template<int N, int K>
+unique_ptr<double[]> func(int (&A)[K][N], int (&B)[N][K]) {
+ auto arr = unique_ptr<double[]>(new double{K});
+ for(int i = 0; i < K; ++i) {
+ vector<int> t;
+ int sum = 0;
+ for(int j = 0; j < N; ++j) {
+ t.push_back(B[j][i]);
+ sum+=A[i][j];
+ }
+
+ double media = static_cast<double>(sum)/N;
+ auto min_num = min_element(begin(t), end(t));
+ arr[i] = media - *min_num;
+ }
+
+ return arr;
+}
+
+int main() {
+ const int N2 = 3, K2 = 2;
+ int A[K2][N2] = {
+ {3, 7, 10},
+ {5, 12, 32},
+ };
+ int B[N2][K2] = {
+ {12, 10},
+ {15, 17},
+ {8, 0},
+ };
+ auto x = func(A, B);
+
+ for(int i = 0; i < K2; ++i)
+ cout << x[i] << ' ';
+
+ cout << endl;
+
+ return 0;
+}