diff options
author | Santo Cariotti <dcariotti24@gmail.com> | 2019-11-19 10:40:19 +0100 |
---|---|---|
committer | Santo Cariotti <dcariotti24@gmail.com> | 2019-11-19 10:40:19 +0100 |
commit | 3d087be7ef5ef61daaa0f97bb841d005f4dc3a19 (patch) | |
tree | c50060cd666fd9ebb22cb558e60bba3f94576e41 | |
parent | 6dc8738269a20034b53bb363e0fb9493c15d5230 (diff) |
Ex 1 - 25/06/19
Scrivere un metodo che prenda in input una matrice di interi M di dimensioni n × m, uno short k ed un double x, e restituisca il valore booleano true se esiste almeno una colonna in M contenente esattamente k coppie di elementi adiacenti tali che il rapporto tra il primo elemento ed il secondo elemento di ogni coppia sia minore di x. NB: Si assuma k ≤ n − 1 e si presti attenzione alle divisioni per zero!
-rw-r--r-- | I_anno/Programmazione_1/ex1_25_06_19.cc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/I_anno/Programmazione_1/ex1_25_06_19.cc b/I_anno/Programmazione_1/ex1_25_06_19.cc new file mode 100644 index 0000000..f28a09b --- /dev/null +++ b/I_anno/Programmazione_1/ex1_25_06_19.cc @@ -0,0 +1,45 @@ +#include <iostream> +#include <utility> +#include <vector> + +using namespace std; + +template<int N, int M> +bool func(int (&A)[N][M], short k, double x) { + for(int i = 0; i < M; ++i) { + vector<pair<int, int> > v; + + for(int j = 0; j < N-1; ++j) { + v.push_back({A[j][i], A[j+1][i]}); + } + + int check_num = 0; + + for(auto const& i : v) { + if(i.second == 0) continue; + double elem = static_cast<double>(i.first) / static_cast<double>(i.second); + + if(elem < x) + check_num++; + } + + if(check_num == k) + return true; + } + + + return false; +} + +int main() { + int A[4][3] = { + {2, 3, 5}, + {10, 20, 10}, + {90, 19, 69}, + {10, 0, 0}, + }; + + cout << func(A, 2, 0.005) << endl; // 0 + cout << func(A, 2, 1.0) << endl; // 1 + return 0; +} |