diff options
Diffstat (limited to 'I_anno/Programmazione_1/ex1_03_12_19.cc')
-rw-r--r-- | I_anno/Programmazione_1/ex1_03_12_19.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/I_anno/Programmazione_1/ex1_03_12_19.cc b/I_anno/Programmazione_1/ex1_03_12_19.cc new file mode 100644 index 0000000..8f9bed7 --- /dev/null +++ b/I_anno/Programmazione_1/ex1_03_12_19.cc @@ -0,0 +1,65 @@ +#include <iostream> + +using namespace std; +/* +2 3 4 5 +1 2 3 4 +1 2 3 0 + +3 x 4 + +5 2 1 0 +*/ + +template<int N, int M> +bool* func(unsigned int (&K)[N][M], double (&D)[M]) { + bool* A = new bool[M]; + for(int i = 0; i < M; ++i) + A[i] = false; + + for(int i = 0; i < M; ++i) { + int sum = 0; + for(int j = 0; j < N; ++j) { + sum+=K[j][i]; + } + + if(static_cast<double>(sum)/static_cast<double>(M) > D[i]) { + A[i] = true; + } + } + + return A; +} + +int main() { + // TODO: test + unsigned int A[3][4] = { + {2, 3, 4, 5}, + {1, 2, 3, 4}, + {1, 2, 3, 0} + }; + + double D[4] = {5., 2.2, 1.1, 0.50}; + + auto a = func(A, D); + for(int i = 0; i < 4; ++i) + cout << a[i] << ' '; + + cout << endl; + + unsigned int A2[3][4] = { + {2, 3, 4, 5}, + {1, 2, 0, 4}, + {1, 2, 0, 0} + }; + + double D2[4] = {5., 2.2, 15.1, 18.50}; + + auto a2 = func(A2, D2); + for(int i = 0; i < 4; ++i) + cout << a2[i] << ' '; + + cout << endl; + + return 0; +} |