summaryrefslogtreecommitdiff
path: root/I_anno/Programmazione_1
diff options
context:
space:
mode:
authorSanto Cariotti <dcariotti24@gmail.com>2019-11-19 10:40:19 +0100
committerSanto Cariotti <dcariotti24@gmail.com>2019-11-19 10:40:19 +0100
commit3d087be7ef5ef61daaa0f97bb841d005f4dc3a19 (patch)
treec50060cd666fd9ebb22cb558e60bba3f94576e41 /I_anno/Programmazione_1
parent6dc8738269a20034b53bb363e0fb9493c15d5230 (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!
Diffstat (limited to 'I_anno/Programmazione_1')
-rw-r--r--I_anno/Programmazione_1/ex1_25_06_19.cc45
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;
+}