diff options
Diffstat (limited to 'I_anno/Programmazione_1')
40 files changed, 0 insertions, 2334 deletions
diff --git a/I_anno/Programmazione_1/ex01.cc b/I_anno/Programmazione_1/ex01.cc deleted file mode 100644 index 9183dec..0000000 --- a/I_anno/Programmazione_1/ex01.cc +++ /dev/null @@ -1,42 +0,0 @@ -#include <iostream> -#include <algorithm> -#include <vector> -#define K 2 -#define N 3 - -using namespace std; - -template<int KK, int NN> -bool func(int (&a)[KK][NN][NN], int w) { - vector<int> list; - for(int i = 0; i < KK; ++i) { - list.clear(); - for(int j = 0; j < NN; ++j) - list.push_back(a[i][j][j]); - - auto mm = minmax_element(begin(list), end(list)); - float media = (static_cast<float>(*mm.first)+static_cast<float>(*mm.second))/2; - if(media <= w) - return true; - } - - return false; -} - -int main() { - int a[K][N][N] = { - { - {1, 2, 30}, - {1, 80, 3}, - {1, 2, 3}, - }, - { - {1, 2, 30}, - {1, 20, 3}, - {1, 2, 3}, - }}; - - cout << func(a, 5); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex08.cc b/I_anno/Programmazione_1/ex08.cc deleted file mode 100644 index fdfea92..0000000 --- a/I_anno/Programmazione_1/ex08.cc +++ /dev/null @@ -1,36 +0,0 @@ -#include <iostream> -#include <stdio.h> -#define N 3 -#define M 5 - -using namespace std; - -bool func(int A[N][M], short k, short w) { - short counter = 0; - for(int i = 0; i < M; ++i) { - short t_counter = 0; - for(int j = 1; j < N; ++j) { - if(A[j][i] < A[j-1][i]) - break; - else - ++t_counter; - } - - if(t_counter >= k) - ++counter; - } - - return counter >= w; -} - -int main() { - int array[N][M] = { - {5, 7, 9, 10, 5}, - {10, 2, 3, 4, 10}, - {16, 34, 21, 23, 1} - }; - - cout << func(array, 2, 1) << endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/ex10_07_18.cc b/I_anno/Programmazione_1/ex10_07_18.cc deleted file mode 100644 index 092b184..0000000 --- a/I_anno/Programmazione_1/ex10_07_18.cc +++ /dev/null @@ -1,45 +0,0 @@ -#include<iostream> -#include<vector> - -#define n 3 - -using namespace std; - -bool func(char (*A)[n]) { - bool check{false}; - char str[n]; - - for(int i = 0; i < n; ++i) { - str[i] = A[i][i]; - } - - short n_check{0}; - for(int i = 0; i < n; ++i) { - short index{0}; - for(int j = 0; j < n; ++j) { - if(A[j][i] != str[index++]) { - break; - } - ++n_check; - } - if(n_check == n) { - check = true; - break; - } - } - - return check; -} - - -int main() { - char A[3][3] = { - {'a', 'b', 'c'}, - {'b', 'b', 'c'}, - {'c', 'b', 'c'}, - }; - - cout << func(&A[0]); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex12.cc b/I_anno/Programmazione_1/ex12.cc deleted file mode 100644 index ab20cef..0000000 --- a/I_anno/Programmazione_1/ex12.cc +++ /dev/null @@ -1,50 +0,0 @@ -#include <iostream> -#include <vector> -#define N 3 -using namespace std; - -string* func(string a[N][N], short k, string s) { - string* sn = new string[N]; - vector<string> l; - - // Diagonale secondaria - for(int i = N-1, j = 0; i >= 0; --i, ++j) { - l.push_back(a[i][j]); - } - - bool d2 = true; - for(auto const& i : l) { - if(i.length() < k || i.find(s) != 0) { - d2 = false; - break; - } - } - - if(d2) { - for(int i = 0; i < N; ++i) { - sn[i] = l.at(i); - } - } else { - for(int i = 0; i < N; ++i) { - sn[i] = a[i][i]; - } - } - - return sn; -} - -int main() { - string a[N][N] = { - {"aab", "bbc", "4de"}, - {"xyb", "bbc", "yz3"}, - {"47x", "1y_", "23g"}, - }; - string* x = func(a, 1, "4"); - - for(int i = 0; i < N; ++i) - cout << x[i] << ' '; - - cout << endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/ex13.cc b/I_anno/Programmazione_1/ex13.cc deleted file mode 100644 index f9f19fa..0000000 --- a/I_anno/Programmazione_1/ex13.cc +++ /dev/null @@ -1,45 +0,0 @@ -#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; -} diff --git a/I_anno/Programmazione_1/ex15.cc b/I_anno/Programmazione_1/ex15.cc deleted file mode 100644 index 525882c..0000000 --- a/I_anno/Programmazione_1/ex15.cc +++ /dev/null @@ -1,41 +0,0 @@ -#include <iostream> -using namespace std; - -template<int N, int M> -unique_ptr<string[]> func(string (&A)[N][M], short (&B)[N][M]) { - auto arr = unique_ptr<string[]>(new string[N]); - - for(int i = 0; i < N; ++i) { - short sum{0}; - string tmp{""}; - for(int j = 0; j < M; ++j) { - sum+=B[i][j]; - tmp+=A[i][j]; - } - - arr[i] = tmp.length() >= sum ? tmp : ""; - } - - return arr; -} - -int main() { - string A[2][3] = { - {"aab", "aA", "314"}, - {"1334", "5715", "__"}, - }; - - short B[2][3] = { - {2, 3, 0}, - {1, 15, 7} - }; - - auto x = func(A, B); - - for(int i = 0; i < 2; ++i) - cout << x[i] << ' '; - - cout << endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/ex16.cc b/I_anno/Programmazione_1/ex16.cc deleted file mode 100644 index 4c2b74a..0000000 --- a/I_anno/Programmazione_1/ex16.cc +++ /dev/null @@ -1,41 +0,0 @@ -#include <iostream> - -using namespace std; - -template<int N, int M> -short func(string (&S)[N][M], short (&B)[M]) { - short index{0}; - short ex_count{0}; - short i{0}; - - for(auto const& row : S) { - short count{0}; - if(i > M) - break; - - for(auto const& col : row) { - if(col.length() <= B[i]) - ++count; - } - - if(count > ex_count) { - index = i; - ex_count = count; - } - ++i; - } - - return index; -} - -int main() { - string t[2][3]{ - {"greeeeee", "aaaaaaa", "bbbbbb"}, - {"abc", "sooca", "icsdi"}, - }; - short bb[3]{3, 10}; - short x = func(t, bb); - - cout << x << endl; - return 0; -} diff --git a/I_anno/Programmazione_1/ex17.cc b/I_anno/Programmazione_1/ex17.cc deleted file mode 100644 index 9eee61d..0000000 --- a/I_anno/Programmazione_1/ex17.cc +++ /dev/null @@ -1,43 +0,0 @@ -#include <iostream> - -using namespace std; - -template<int N, int M> -short* func(string (&S)[N][M], char (&C)[N], char (&D)[N]) { - short* a = new short[N]; - - for(int i = 0; i < N; ++i) { - short counter = 0; - for(auto const& rows_string : S[i]) { - if(rows_string.length() > 2) { - if(rows_string.at(0) == C[i] - && rows_string.at(rows_string.length()-1) == D[i]) - ++counter; - } - } - - a[i] = counter; - } - - - return a; -} - -int main() { - string t[3][3]{ - {"suca", "we", "soia"}, - {"omg", "ooohygodg", "onopg"}, - {"", "mii", ""}, - }; - - char c[3] = {'s', 'o', 'a'}; - char d[3] = {'a', 'g', 'a'}; - - short* n = func(t, c, d); - - for(int i = 0; i < 3; ++i) { - cout << n[i] << ' '; - } - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_03_12_19.cc b/I_anno/Programmazione_1/ex1_03_12_19.cc deleted file mode 100644 index 8f9bed7..0000000 --- a/I_anno/Programmazione_1/ex1_03_12_19.cc +++ /dev/null @@ -1,65 +0,0 @@ -#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; -} diff --git a/I_anno/Programmazione_1/ex1_04_12_19.cc b/I_anno/Programmazione_1/ex1_04_12_19.cc deleted file mode 100644 index 3d352f1..0000000 --- a/I_anno/Programmazione_1/ex1_04_12_19.cc +++ /dev/null @@ -1,39 +0,0 @@ -#include <iostream> - -using namespace std; - -template<int N, int M> -short func(int (&A)[N][M], double d1, double d2, short s) { - short result{0}; - - for(int i = 0; i < M; ++i) { - short temp_result{0}; - for(int j = 0; j < N-1; ++j) { - if(temp_result >= s) - continue; - - double div = static_cast<double>(A[j][i]) / static_cast<double>(A[j+1][i]); - if(div >= d1 && div <= d2) - temp_result++; - } - - if(temp_result >= s) - result++; - } - - return result; -} - -int main() { - int a1[5][2] = { - {15, 100}, - {15, 100}, - {10, 100}, - {10, 10}, - {10, 30}, - }; - - cout << func(a1, 0.3, 1.9, 2) << endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_06_12_18.cc b/I_anno/Programmazione_1/ex1_06_12_18.cc deleted file mode 100644 index b16748f..0000000 --- a/I_anno/Programmazione_1/ex1_06_12_18.cc +++ /dev/null @@ -1,35 +0,0 @@ -#include<iostream> - -using namespace std; - -template<int N> -bool func(int (&A)[N][N], double w) { - int sumDiagonale{}; - for(int i = 0; i < N; ++i) sumDiagonale+=A[i][i]; - - for(int i = 0; i < N; ++i) { - int sumCol{}; - for(int j = 0; j < N; ++j) { - sumCol+=A[j][i]; - } - - if(static_cast<double>(sumCol/sumDiagonale) > w) - return true; - } - - - return false; -} - -int main() { - int A[4][4] = { - {1, 2, 3, 4}, - {1, 2, 3, 4}, - {1, 2, 3, 4}, - {1, 2, 3, 4}, - }; - - cout << func(A, 4.5); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_08_03_18.cc b/I_anno/Programmazione_1/ex1_08_03_18.cc deleted file mode 100644 index 9942714..0000000 --- a/I_anno/Programmazione_1/ex1_08_03_18.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include<iostream> - -#define n 3 - -using namespace std; - -bool func(int (*A)[n]) { - /* - 0 1 n-2 n-1 - 0 | x | x | x | x | - 1 | x | x | x | x | - n-2 | x | x | x | x | - n-1 | x | x | x | x | - */ - - int sum{}; // Inizializza sum a 0 - for(int i = 1, j = n-1; j > 0; ++i, j--) { - sum+=A[j][i]; - } - - return (sum % n == 0); -} - -int main() { - int A[n][n] = { - {1, 2, 3, }, - {1, 2, 3, }, - {1, 3, 0, }, - }; - - cout << func(&A[0]); - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_18_02_19.cc b/I_anno/Programmazione_1/ex1_18_02_19.cc deleted file mode 100644 index a1bfc91..0000000 --- a/I_anno/Programmazione_1/ex1_18_02_19.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include<iostream> - -using namespace std; - -template<int N, int M> -bool func(int (&A)[N][M], double w, double v) { - if(w > v) return false; - - for(int i = 0; i < M; ++i) { - double sum{}; - for(int j = 0; j < N; ++j) { - sum+=A[j][i]; - } - - double media = sum / static_cast<double>(N); - - if(media >= w && media <= v) return true; - } - - return false; -} - -int main() { - int M[3][4] = { - {1, 2, 3, 4}, - {1, 2, 3, 5,}, - {1, 2, 3, 6}, - }; - - cout << func(M, 0.1, 0.2); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_23_04_19.cc b/I_anno/Programmazione_1/ex1_23_04_19.cc deleted file mode 100644 index c977ece..0000000 --- a/I_anno/Programmazione_1/ex1_23_04_19.cc +++ /dev/null @@ -1,35 +0,0 @@ -#include<iostream> -#define N 4 -#define M 3 - -using namespace std; - -double func(string (*S)[M], string s1, short k) { - if(k < 1 || k > M) return -1; - - short counter{}; - short c_strings{}; - - for(int i = 0; i < N; ++i) { - for(int j = 0; j < k; ++j) { - ++c_strings; - if(S[i][j].length() > s1.length()) - ++counter; - } - } - - return static_cast<double>(counter*100/c_strings); -} - -int main() { - string A[N][M] = { - {"red", "orange", "green"}, - {"red", "orange", "green"}, - {"red", "orange", "green"}, - {"red", "orange", "green"}, - }; - - cout << func(&A[0], "pink", 2); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_23_07_19.cc b/I_anno/Programmazione_1/ex1_23_07_19.cc deleted file mode 100644 index 3c6c5f3..0000000 --- a/I_anno/Programmazione_1/ex1_23_07_19.cc +++ /dev/null @@ -1,28 +0,0 @@ -#include<iostream> - -using namespace std; - -template<int N, int M> -bool func(double (&D)[N][M], int a) { - for(int i = 0; i < M; ++i) { - for(int j = 0; j < N-1; ++j) { - if(static_cast<int>(D[j][i]+D[j+1][i]) == a) { - return true; - } - } - } - - return false; -} - -int main() { - double A[3][4] = { - {40.2, 10, 10.2, 1}, - {40.2, 10, 10.2, 1}, - {40.2, 10, 10.2, 1}, - }; - - cout << func(A, 20); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_25_06_19.cc b/I_anno/Programmazione_1/ex1_25_06_19.cc deleted file mode 100644 index f28a09b..0000000 --- a/I_anno/Programmazione_1/ex1_25_06_19.cc +++ /dev/null @@ -1,45 +0,0 @@ -#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; -} diff --git a/I_anno/Programmazione_1/ex1_27_01_20.cc b/I_anno/Programmazione_1/ex1_27_01_20.cc deleted file mode 100644 index 1b0e529..0000000 --- a/I_anno/Programmazione_1/ex1_27_01_20.cc +++ /dev/null @@ -1,47 +0,0 @@ -#include<iostream> -#define N 3 -#define M 4 -using namespace std; - -float* func(int** Q, float a, float b) { - float* arr = new float[M]; - - int a_i = static_cast<int>(a); - int b_i = static_cast<int>(b); - - for(int i = 0; i < M; ++i) { - short counter{}; - float sum{}; - for(int j = 0; j < N; ++j) { - if(Q[j][i]) { - if(Q[j][i] >= a_i && Q[j][i] <= b_i) { - ++counter; - sum += Q[j][i]; - } - } - } - - arr[i] = (sum / static_cast<float>(counter)); - } - - return arr; -} - -int main() { - int** A = new int*[N]; - for(int i = 0; i < N; ++i) { - A[i] = new int[M]; - for(int j = 0; j < M; ++j) - A[i][j] = 24; - } - - float* arr = func(A, 1.0, 33.0); - - for(int j = 0; j < M; ++j) - cout << arr[j] << ' '; - - delete[] A; - delete arr; - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_28_01_19.cc b/I_anno/Programmazione_1/ex1_28_01_19.cc deleted file mode 100644 index a027e82..0000000 --- a/I_anno/Programmazione_1/ex1_28_01_19.cc +++ /dev/null @@ -1,30 +0,0 @@ -#include <iostream> -#include <algorithm> -#include <vector> - -using namespace std; - -template<int N> -bool func(int (&A)[N][N], double w) { - vector<int> l; - for(int i = N-1, j = 0; j < N; --i, j++) { - l.push_back(A[i][j]); - } - - auto min_max = minmax_element(begin(l), end(l)); - - return (static_cast<double>(*min_max.first)/static_cast<double>(*min_max.second)) <= w; -} - -int main() { - int A[3][3] = { - {1, 2, 3,}, - {67, 10, 56}, - {10, 0, 1}, - }; - - cout << func(A, 0.2) << endl; // False - cout << func(A, 0.4) << endl; // True - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_tutorato_03_12_19.cc b/I_anno/Programmazione_1/ex1_tutorato_03_12_19.cc deleted file mode 100644 index d8d61b0..0000000 --- a/I_anno/Programmazione_1/ex1_tutorato_03_12_19.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include <iostream> -#include <cctype> - -using namespace std; - -template<int N> -bool* func(string (&A)[N]) { - bool* a2 = new bool[N]; - - for(int i = 0; i < N; ++i) { - bool is_pal = true; - for(int j = 0, z = A[i].length()-1; j < z; ++j, --z ) { - if(tolower(A[i].at(j)) != tolower(A[i].at(z))) { - is_pal = false; - break; - } - } - a2[i] = is_pal; - } - - return a2; -} - -int main() { - string t[] = {"oslo", "yam_a_may", "AnNa"}; - auto a = func(t); - - for(int i = 0; i < 3; ++i) { - cout << a[i] << ' '; - } - - return 0; -} diff --git a/I_anno/Programmazione_1/ex1_tutorato_14_01_20.cc b/I_anno/Programmazione_1/ex1_tutorato_14_01_20.cc deleted file mode 100644 index 557b0ee..0000000 --- a/I_anno/Programmazione_1/ex1_tutorato_14_01_20.cc +++ /dev/null @@ -1,27 +0,0 @@ -#include<iostream> -#include<algorithm> -#include<vector> - -using namespace std; - -template<int N> -bool func(int (&A)[N][N], double w) { - vector<int> list; - for(int i = 0, j = N-1; i < N; ++i, --j) - list.push_back(A[j][i]); - - auto minmax = minmax_element(begin(list), end(list)); - return (static_cast<double>(*minmax.first)/static_cast<double>(*minmax.second)) <= w; -} - -int main() { - int A[3][3] = { - {1, 2, 3}, - {1, 2, 3}, - {1, 2, 3}, - }; - - cout << func(A, 0.1); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_04_12_19.cc b/I_anno/Programmazione_1/ex2_04_12_19.cc deleted file mode 100644 index 66b2895..0000000 --- a/I_anno/Programmazione_1/ex2_04_12_19.cc +++ /dev/null @@ -1,39 +0,0 @@ -#include <iostream> -#include <string> - -using namespace std; - -template<int N> -bool func(string (&Q)[N][N], string s) { - short n_presents[2] = {0}; - for(int i = 0; i < N; ++i) { - if(Q[i][i].find(s) != std::string::npos) - n_presents[0]++; - } - - for(int i = 0, j = N-1; i < N; ++i, --j) { - cout << Q[j][i].find(s) << endl; - if(Q[j][i].find(s) != std::string::npos) - n_presents[1]++; - } - - return n_presents[0] > n_presents[1]; -} - -int main() { - string a1[3][3] = { - {"ciaoneXX", "fra", "zio"}, - {"oh, ma che", "eXXh", "sta cosa?"}, - {"greg", "no", "foXXrse"} - }; - - string a2[3][3] = { - {"ciaoneXX", "fra", "ziYYo"}, - {"oh, ma che", "eXXYYh", "sta cosa?"}, - {"gregYY", "no", "foXrse"} - }; - - cout << func(a1, "XX") << ' ' << func(a2, "YY") << endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_06_12_18.cc b/I_anno/Programmazione_1/ex2_06_12_18.cc deleted file mode 100644 index 50744ba..0000000 --- a/I_anno/Programmazione_1/ex2_06_12_18.cc +++ /dev/null @@ -1,34 +0,0 @@ -#include<iostream> -#define N 3 -#define M 4 - -using namespace std; - -bool* func(string (*A)[M], short k, string s) { - bool* arr = new bool[N]; - - for(int i = 0; i < N; ++i) { - short counter{}; - for(int j = 0; j < M; ++j) { - if(A[i][j].find(s) != std::string::npos) - ++counter; - } - - arr[i] = (counter >= k); - } - - return arr; -} - -int main() { - string Arr[N][M] = { - {"Ciaone", "Come one va?", "We one", ""}, - {"Ciaoe", "Come va?", "We one", ""}, - {"Ciaone", "Come one va?", "We one", ""}, - }; - - bool* v = func(Arr, 2, "one"); - for(int i = 0; i < N; ++i) cout << v[i] << ' '; - - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_08_03_18.cc b/I_anno/Programmazione_1/ex2_08_03_18.cc deleted file mode 100644 index 88d55e1..0000000 --- a/I_anno/Programmazione_1/ex2_08_03_18.cc +++ /dev/null @@ -1,49 +0,0 @@ -#include<iostream> -using namespace std; - -template<int N, int M> -bool func(string (&A)[N][M], short w) { - bool check{false}; - for(int i = 0; i < N; ++i) { - bool counter{false}; - string str{""}; - string str2{""}; - for(int j = 0; j < M; ++j) { - if(A[i][j].length() < w) { - counter = false; - continue; - } - - if(!counter) { - str = A[i][j].substr(0, w); - - counter = true; - continue; - } - - str2 = A[i][j].substr(A[i][j].length()-w, w); - - if(str == str2) { - check = true; - break; - } else { - j--; - counter = false; - } - } - - if(check) break; - } - - return check; -} - -int main() { - string A[3][3] = { - {"parola", "allorapar", "bla",}, - {"", "red", "red",}, - {"blue", "", "",}, - }; - cout << func(A, 3); - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_18_02_19.cc b/I_anno/Programmazione_1/ex2_18_02_19.cc deleted file mode 100644 index 8195fb9..0000000 --- a/I_anno/Programmazione_1/ex2_18_02_19.cc +++ /dev/null @@ -1,43 +0,0 @@ -#include<iostream> -#include<cctype> - -using namespace std; - -short func(string (*M)[4], unsigned short k, unsigned short s) { - short counter{}; - - for(int i = 0; i < 4; ++i) { - short _rowcounter{}; - for(int j = 0; j < 3; ++j) { - short _vocals{}; - for(char& c : M[j][i]) { - switch(tolower(c)) { - case 'a': case 'e': case 'i': case 'o': case 'u': - ++_vocals; - break; - default: break; - } - } - - if(_vocals < s) ++_rowcounter; - } - - if(_rowcounter >= k) ++counter; - } - - return counter; -} - - -int main() { - string M[3][4] = { - {"HEI", "we", "ciao", "com'è?"}, - {"HEI", "we", "ciao", "com'è?"}, - {"HEI", "we", "ciao", "com'è?"}, - }; - - cout << func(&M[0], 2, 3); - - - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_23_07_19.cc b/I_anno/Programmazione_1/ex2_23_07_19.cc deleted file mode 100644 index 3b0ed37..0000000 --- a/I_anno/Programmazione_1/ex2_23_07_19.cc +++ /dev/null @@ -1,44 +0,0 @@ -#include<iostream> - -using namespace std; - -template<int N> -bool func(string (&Q)[N][N]) { - string stringaL = Q[0][0]; - string stringaC = Q[0][0]; - for(int i = 0; i < N; ++i) { - if(Q[i][i].length() > stringaL.length()) - stringaL = Q[i][i]; - else if(Q[i][i].length() < stringaC.length()) - stringaC = Q[i][i]; - } - - short vocaliL{}; - short vocaliC{}; - - for(auto& c : stringaL) { - c = tolower(c); - if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') - ++vocaliL; - } - - for(auto& c : stringaC) { - c = tolower(c); - if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') - ++vocaliC; - } - - return vocaliL < vocaliC; -} - -int main() { - string A[3][3] = { - {"lllll", "bb", "cc"}, - {"AAA", "e", "cc"}, - {"AAA", "bb", "cc"}, - }; - - cout << func(A); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_27_01_20.cc b/I_anno/Programmazione_1/ex2_27_01_20.cc deleted file mode 100644 index 25caf5b..0000000 --- a/I_anno/Programmazione_1/ex2_27_01_20.cc +++ /dev/null @@ -1,57 +0,0 @@ -#include<iostream> -#include<set> - -using namespace std; - -template<int N, int M> -double func(string (&A)[N][M], string x, string y, short k, short w) { - set<char> s; - for(char const&c : x) s.insert(c); - x = ""; - for(char const&c: s) x+=c; - - s.clear(); - for(char const&c : y) s.insert(c); - y = ""; - for(char const&c: s) y+=c; - - for(int i = 0; i < N; ++i) { - for(int j = 0; j < M; ++j) { - s.clear(); - for(char const&c : A[i][j]) s.insert(c); - A[i][j] = ""; - for(char const&c: s) A[i][j]+=c; - } - } - - short counter{}; - for(int i = 0; i < M; ++i) { - short k_i{}; - for(int j = 0; j < N; ++j) { - if(A[j][i].length() < w) continue; - short char_counter{}; - for(char const& c: A[j][i]) { - if(x.find(c) != std::string::npos && y.find(c) != std::string::npos) - ++char_counter; - } - if(char_counter >= w) - ++k_i; - } - if(k_i >= k) - ++counter; - } - - return static_cast<double>(counter*100)/static_cast<double>(M); -} - -int main() { - string A[3][4] = { - {"we,", "heila", "ciaone", ""}, - {"we,", "heila", "ciaone", ""}, - {"we,", "heila", "ciaone", ""}, - }; - - cout << func(A, "we", "we", 2, 2); - - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_28_01_19.cc b/I_anno/Programmazione_1/ex2_28_01_19.cc deleted file mode 100644 index 7ad8398..0000000 --- a/I_anno/Programmazione_1/ex2_28_01_19.cc +++ /dev/null @@ -1,36 +0,0 @@ -#include <iostream> -#include <cctype> - -using namespace std; - -template<int N, int M> -bool func(string (&A)[N][M], unsigned short k, unsigned short s) { - for(int i = 0; i < N; ++i) { - short string_num = 0; - for(int j = 0; j < M; ++j) { - short upper_chars = 0; - for(auto const& c : A[i][j]) { - if(isupper(c)) - ++upper_chars; - } - - if(upper_chars >= s) - ++string_num; - } - - if(string_num >= k) - return false; - } - - return true; -} - -int main() { - string A[2][3] = { - {"suce", "oHh", "b"}, - {"111", "HAAa", "B"} - }; - - cout << func(A, 2, 1) << endl; - return 0; -} diff --git a/I_anno/Programmazione_1/ex2_tutorato_14_01_20.cc b/I_anno/Programmazione_1/ex2_tutorato_14_01_20.cc deleted file mode 100644 index b54860e..0000000 --- a/I_anno/Programmazione_1/ex2_tutorato_14_01_20.cc +++ /dev/null @@ -1,38 +0,0 @@ -#include<iostream> - -using namespace std; - -template<int N, int M> -bool func(string (&A)[N][M], unsigned short k, unsigned short s) { - for(int i = 0; i < N; ++i) { - short count_s{}; - for(int j = 0; j < M; ++j) { - short upper_cs{}; - for(auto const& c : A[i][j]) { - if(isupper(c)) - ++upper_cs; - } - - if(upper_cs < s) - ++count_s; - } - - if(count_s >= k) - return true; - } - - return false; -} - -int main() { - string A[3][4] = { - {"ProVA", "CiAone", "RAed"}, - {"IVVA", "CiAOO", "BLUE"}, - {"AA", "AA", "AA3#"}, - }; - - cout << func(A, 3, 1); - - - return 0; -} diff --git a/I_anno/Programmazione_1/h9_1.cc b/I_anno/Programmazione_1/h9_1.cc deleted file mode 100644 index 12c629d..0000000 --- a/I_anno/Programmazione_1/h9_1.cc +++ /dev/null @@ -1,27 +0,0 @@ -#include <iostream> - -// Array NxM. Trovare media dei valori differenza tra gli elementi della diagonale principale e secondaria - -int main() { - const short N = 4, M = 3; - int A[N][M] = { - {3, 1, 5}, - {5, 3, 1}, - {8, 7, 4}, - {4, 7, 4}, - }; - - int diff1 = A[0][0], diff2 = A[N-1][0]; - - // Condizione necessaria per matrici in cui M != N - short cond = (N < M) ? N : M; - - for(int i = 1, j = N-1, j2 = 1; i < cond; ++i, --j, ++j2) { - diff1 -= A[i][i]; - diff2 -= A[j][j2]; - } - - std::cout << static_cast<float>((diff1+diff2)/2) << std::endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/h9_2.cc b/I_anno/Programmazione_1/h9_2.cc deleted file mode 100644 index 0e9c853..0000000 --- a/I_anno/Programmazione_1/h9_2.cc +++ /dev/null @@ -1,32 +0,0 @@ -#include <iostream> - -// Array NxM e numero p. Stampare le medie per ogni colonna dispari dei valori x <= p - -int main() { - const short N = 4, M = 4; - int p = 9; - int A[N][M] = { - {3, 1, 5, 5}, - {5, 3, 1, 5}, - {8, 7, 4, 5}, - {4, 7, 4, 5}, - }; - // Condizione necessaria per matrici in cui M != N - short cond = (N < M) ? N : M; - - for(int i = 1; i < cond; i+=2) { - int sum = 0, c = 0; - for(int j = 0; j < M; ++j) { - if(A[j][i] <= p) { - sum += A[j][i]; - c++; - } - } - - if(c > 0) { - std::cout << static_cast<float>(sum)/c << '\n'; - } - } - - return 0; -} diff --git a/I_anno/Programmazione_1/h9_3.cc b/I_anno/Programmazione_1/h9_3.cc deleted file mode 100644 index c9ef418..0000000 --- a/I_anno/Programmazione_1/h9_3.cc +++ /dev/null @@ -1,31 +0,0 @@ -#include <iostream> -#include <algorithm> - -// Dato array V=NxM e uno grande W, trovare il numero di elementi presenti in W che sono compresi in ogni riga di V - -int main() { - std::cout << __cplusplus; - const auto N = 4, M = 4, L = 3; - int V[N][M] = { - {3, 1, 5, 50}, - {5, 3, 1, 5}, - {8, 7, 4, 5}, - {4, 7, 4, 5}, - }; - - int W[L] = {4, 50, 2}; - - for(auto i = 0; i < N; ++i) { - const auto range = std::minmax_element(std::begin(V[i]), std::end(V[i])); - int count{0}; - for(auto const& j : W) { - if(j >= *range.first && j <= *range.second) - count++; - } - - std::cout << count << std::endl; - } - - - return 0; -} diff --git a/I_anno/Programmazione_1/h9_4.cc b/I_anno/Programmazione_1/h9_4.cc deleted file mode 100644 index cd534b3..0000000 --- a/I_anno/Programmazione_1/h9_4.cc +++ /dev/null @@ -1,40 +0,0 @@ -#include <iostream> -#include <algorithm> - -// Data matrice V di NxM, array A e numero w<M, trovare se c'è almeno una riga di V con almeno w elementi maggiori di ogni elemento di A - -const auto N{4}, M{4}, k{3}, w{2}; - -bool row_alg(int V[N][M], int* A, int w) { - // È ovvio che sia presente almeno 0 elementi, quindi non ha senso continuare - if(w <= 0) return true; - auto max_element_of_A = std::max_element(A,A+k); - - for(auto i = 0; i < N; ++i) { - int counts = 0; - for(auto j = 0; j < M; ++j) { - if(V[i][j] > *max_element_of_A) - counts++; - - if(counts == w) - return true; - } - } - - return false; -} - -int main() { - int V[N][M] = { - {3, 59, 5, 54}, - {5, 3, 1, 5}, - {8, 7, 4, 5}, - {4, 7, 4, 5}, - }; - - int A[k] = {4, 50, 2}; - - std::cout << row_alg(V, A, w) << std::endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/h9_5.cc b/I_anno/Programmazione_1/h9_5.cc deleted file mode 100644 index a2e3f8b..0000000 --- a/I_anno/Programmazione_1/h9_5.cc +++ /dev/null @@ -1,51 +0,0 @@ -#include <iostream> -#include <algorithm> -#include <map> - -// Date due matrici e un numero p, stampare i valori che compaiono p volte dalla prima alla seconda matrice - -int main() { - const auto N{4}, M{4}, L{4}, Q{4}, p{4}; - int V[N][M] = { - {3, 1, 5, 50}, - {5, 3, 1, 5}, - {8, 7, 4, 5}, - {4, 7, 4, 5}, - }; - - int W[L][Q] = { - {30, 3, 5, 50}, - {51, 25, 12, 5}, - {90, 12, 4, 5}, - {4, 6, 4, -3}, - }; - - std::map<int, int> values; - - for(auto i = 0; i < N; ++i) { - for(auto j = 0; j < M; ++j) { - if(values.find(V[i][j]) == values.end()) - values.insert({V[i][j], 1}); - else - values[V[i][j]] += 1; - } - } - - for(auto i = 0; i < L; ++i) { - for(auto j = 0; j < Q; ++j) { - auto elem = values.find(W[i][j]); - if(elem != values.end()) { - if(elem->second >= p) { - std::cout << W[i][j] << ' '; - } else { - std::cout << "x "; - } - } else { - std::cout << "x "; - } - } - std::cout << '\n'; - } - - return 0; -} diff --git a/I_anno/Programmazione_1/h9_6.cc b/I_anno/Programmazione_1/h9_6.cc deleted file mode 100644 index d889c43..0000000 --- a/I_anno/Programmazione_1/h9_6.cc +++ /dev/null @@ -1,35 +0,0 @@ -#include <iostream> -#include <algorithm> - -int main() { - const auto N{4}, M{4}, s{50}, z{2}; - int V[N][M] = { - {3, 1, 5, 50}, - {5, 3, 1, 5}, - {8, 7, 4, 5}, - {4, 7, 4, 5}, - }; - - int W[M] = {0}; - - for(auto i = 0; i < N; ++i) { - bool finish{false}; - for(auto j = 0, index = 0; j < M-1; ++j, ++index) { - int sum{0}; - for(auto zz = index; zz < index+z; ++zz) { - sum+=V[i][zz]; - if(sum >= s) { - W[i] = 1; - finish = true; - break; - } - } - if(finish) break; - } - } - - for(auto i = 0; i < N; ++i) - std::cout << W[i] << ' '; - - return 0; -} diff --git a/I_anno/Programmazione_1/lab_14_12_18.cc b/I_anno/Programmazione_1/lab_14_12_18.cc deleted file mode 100644 index 02bbd69..0000000 --- a/I_anno/Programmazione_1/lab_14_12_18.cc +++ /dev/null @@ -1,149 +0,0 @@ -#include<iostream> -#include<cmath> -#define DIM 30 - -using namespace std; - -class A { -protected: - double* ptr; - short len; - - void getPtr(ostream& os) { - os << "ptr=["; - for(int i = 0; i < len; ++i) { - os << ptr[i] << ' '; - } - - os << "]"; - } -public: - A(short n) : len{n} { - srand(time(NULL)); - ptr = new double[n]; - for(int i = 0; i < n; ++i) { - ptr[i] = (double) rand() / RAND_MAX; - } - } - - ~A() { - delete ptr; - } - virtual double foo(short a) const = 0; - virtual void print(ostream& os) = 0; - - double operator[](int i) { - return ptr[i]; - } -}; - -class B : public A { -public: - B(short m, double s) : A{m}, alpha{s} {} - double foo(short b) const { - return static_cast<double>(log(1+extract(b))); - } - void print(ostream& os) { - os << "B, "; - getPtr(os); - os << ", alpha=" << alpha; - } - -private: - double alpha; - double extract(short s) const { - return (ptr[s%len]+alpha)/2; - } - -}; - -template<typename T> -class C; - -template<> -class C<double> : public A { -public: - C(short n) : A{n} { - x = static_cast<double>(log(1+n)); - } - - double foo(short r) const { - return g(r*x); - } - - double g(double k) const { - return 3*k; - } - - void print(ostream& os) { - os << "C<double> "; - getPtr(os); - os << ", x=" << x; - } -private: - short x; -}; - -template<> -class C<int> : public A { -public: - C(short n) : A{n} { - x = g(n); - } - - double foo(short r) const { - return g(r*x); - } - - short g(short k) const { - return 3*k; - } - - void print(ostream& os) { - os << "C<short> "; - getPtr(os); - os << ", x=" << x; - } -private: - short x; -}; - -ostream& operator<<(ostream& os, A& a) { - a.print(os); - - return os; -} - -int main() { - srand(328832748); - A* vett[DIM]; - double maxfoo{-11111111.0}; - double g_sum{}; - for(int i=0; i<DIM; i++) { - short n=1+rand()%5; - switch(rand()%3) { - case 0: vett[i]= new B(n, n/100.0); break; - case 1: { - vett[i]= new C<double>(n); - auto refC = dynamic_cast<C<double>*>(vett[i]); - g_sum+=refC->g(5); - break; - } - case 2: vett[i]= new C<int>(n); - - } - - double foo5 = vett[i]->foo(5); - if(foo5 > maxfoo) - maxfoo = foo5; - } - - for(int i = 0; i < DIM; ++i) { - cout << i+1 << ")" << *(vett[i]) << ", foo(5)=" << vett[i]->foo(5) << endl; - } - - cout << "max(foo(5))=" << maxfoo << " sum(g(5))=" << g_sum << endl; - cout << (*vett[2])[0] << endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/lab_15_02_19_D.cc b/I_anno/Programmazione_1/lab_15_02_19_D.cc deleted file mode 100644 index b050e72..0000000 --- a/I_anno/Programmazione_1/lab_15_02_19_D.cc +++ /dev/null @@ -1,159 +0,0 @@ -#include<iostream> -#include<stdexcept> -#define DIM 50 - -using namespace std; - -class A { -public: - A(short m, short k) : len{m} { - ptr = new int[len]; - srand(time(NULL)); - - for(int i = 0; i < len; ++i) { - ptr[i] = rand()%k + 1; - } - } - - ~A() { - delete ptr; - } - - virtual double const f() = 0; - void print(ostream& os) { - os << typeid(*this).name() << ", ptr=[ "; - for(int i = 0; i < len; ++i) - os << ptr[i] << ' '; - - os << "]"; - } - - int get(short i) { - if(i >= len) - throw out_of_range{"out of range"}; - - return ptr[i]; - } - - short getLen() { - return len; - } - - int& operator[](int x){ - return ptr[x]; - } - - const int& operator[](int x) const { - return ptr[x]; - } - -private: - int* ptr; - short len; - -}; - -class B : public A { -public: - B(short m, short k, double y) : A{m, k}, p{y} {} - double const f() { - int sum{}; - for(int i = 0; i < getLen(); ++i) { - int t = get(i); - - if((t%2) == 0) { - sum+=t; - } - } - - if(sum == 0) - return 0; - - return static_cast<double>(sum/p); - } - - void print(ostream& os) { - A::print(os); - os << ", p=" << p; - } -private: - double p; -}; - -class C : public A { -public: - C(short n, short k, char c) : A{n, k}, x{c} {} - - double const f() { - int sum{}; - short c{}; - for(int i = 0; i < getLen(); ++i) { - int t = get(i); - - if((t%2) == 1) { - sum+=t; - ++c; - } - } - - if(c == 0) - return 0; - - return static_cast<double>(sum/c); - } - - string const g(char c) { - string t{""}; - t+=x; - t+=c; - - return t; - } - - void print(ostream& os) { - A::print(os); - os << ", x=" << x; - } -private: - char x; -}; - -ostream& operator<<(ostream& os, A& a) { - a.print(os); - - return os; -} - -int main() { - srand(111222333); - A *vett[DIM]; - - string conc{""}; - for(int i=0; i<DIM; i++){ - short n=1+rand()%10; - short m = 1+rand()%15; - if(rand()%2==0) - vett[i]= new B(n, m, rand()/(double) RAND_MAX+0.05); - else { - vett[i]= new C(n, m, (char) (rand()%('z' - 'a' + 1) + 'a')); - auto cpnt = dynamic_cast<C*>(vett[i]); - conc+=cpnt->g('h'); - } - } - - double sum{}; - for(int i = 0; i < DIM; i++) { - auto fval = vett[i]->f(); - cout << i << ") " << *(vett[i]) << ", f()=" << fval << endl; - sum+=fval; - } - - cout << "PUNTO 2:\n\tavg(f())=" << sum/DIM << ", g('h')=" << conc << endl; - cout << "PUNTO 3:\n"; - cout << (*(vett[0])).get(0) << endl; - (*(vett[0]))[0] = 24; - cout << (*(vett[0])).get(0) << endl; - - - return 0; -} diff --git a/I_anno/Programmazione_1/lab_26_07_19.cc b/I_anno/Programmazione_1/lab_26_07_19.cc deleted file mode 100644 index 91822d9..0000000 --- a/I_anno/Programmazione_1/lab_26_07_19.cc +++ /dev/null @@ -1,164 +0,0 @@ -#include<iostream> -#include<cmath> -#include<typeinfo> - -#define DIM 30 - -using namespace std; - -class A { -public: - A(short m, int a, int b) : len(m) { - srand(time(NULL)); - vec = new int[m]; - - for(int i = 0; i < m; ++i) { - vec[i] = rand()%b + a; - } - } - - ~A() { - delete vec; - } - - virtual double foo(short a) = 0; - short getLen() { - return len; - } - - virtual void print(ostream& o) = 0; - - int operator()(int i1, int i2) { - if(i1 < 0) i1 = 0; - if(i2 > len) i2 = len; - - int sum = 0; - - for(int i = i1; i < i2; ++i) { - sum+=vec[i]; - } - - return sum; - } - -protected: - int get(short i) { - return vec[i]; - } -private: - int* vec; - short len; -}; - -class B : public A { -public: - B(short m, int x, int y) : A(m, x, y) { - srand(time(NULL)); - short rand_num = rand()%m; - p = get(rand_num); - } - - double foo(short a) { - return static_cast<double>(prod(a)) / static_cast<double>(p); - } - - void print(ostream& os) { - os << "vec=["; - for(int i = 0; i < getLen(); ++i) { - os << get(i) << ' '; - } - os << "], p=" << p; - } -protected: - int prod(short s) { - int index = s%getLen(); - int _prod = 1; - for(int i = index; i < getLen(); ++i) { - _prod *= get(i); - } - - return _prod; - } -private: - int p; -}; - - -template<class T> class C : public A { -public: - C(short n, int a, int b) : A(n, a, b) { - if(typeid(T) == typeid(short)) { - x = n; - } else { - x = log(1+pow(sin(n), 2)); - } - - } - - double foo(short r) { - return g(r); - } - - T g(T k) { - return 2*x*(k+1); - } - - void print(ostream& os) { - os << "vec=["; - for(int i = 0; i < getLen(); ++i) { - os << get(i) << ' '; - } - os << "], x=" << x; - } -private: - T x; -}; - -ostream& operator<<(ostream& os, A& a) { - os << typeid(a).name() << ", "; - a.print(os); - return os; -} - -int main() { - srand (time(0)); - A* vett[DIM]; - double sum_cd = 0; - short num_cd = 0; - for(int i=0; i < DIM; ++i) { - short n = 1+rand()%10; - switch ( rand ()%3) { - case 0: - vett[i]= new B(n, rand()%5 + 1, rand()%10 + 5); - break ; - case 1: { - vett[i]= new C<double>(n, rand()%5 + 1, rand()%10 + 5); - ++num_cd; - C<double>& cc = dynamic_cast<C<double>& >(*(vett[i])); - sum_cd += cc.g(5); - - break ; - } - case 2: - vett[i]= new C<short>(n, rand()%5 + 1, rand()%10 + 5); - } - } - - double max_foo = -100000; - - for(int i = 0; i < DIM; ++i) { - auto foo3 = vett[i]->foo(3); - - if(foo3 > max_foo) { - max_foo = foo3; - } - cout << (*(vett[i])) << ", foo(3)=" << foo3 <<endl; - } - - // max_foo => Valore maggiore calcolato per foo(3) - // sum_cd / num_cd => media valori g(5) per C<Double> - - cout << (*vett[0])(0, 2) << endl; - - return 0; -} diff --git a/I_anno/Programmazione_1/lab_28_02_19_A.cc b/I_anno/Programmazione_1/lab_28_02_19_A.cc deleted file mode 100644 index ff2eaae..0000000 --- a/I_anno/Programmazione_1/lab_28_02_19_A.cc +++ /dev/null @@ -1,166 +0,0 @@ -#include<iostream> -#include<stdexcept> -#include<cstdlib> -#include<cmath> -#define DIM 50 - -using namespace std; - -class A { -public: - A(short m) : len{m} { - arr = new short[m]; - srand(time(NULL)); - for(int i = 0; i < m; ++i) { - arr[i] = rand()%10+1; - } - } - - ~A() { - delete[] arr; - } - - virtual double f(short a) = 0; - virtual void print(ostream& os) = 0; - - short getLen() { - return len; - } - -protected: - short get(short i) { - if(i < 0 || i >= getLen()) - throw out_of_range{"out of arr' range"}; - - return arr[i]; - } - -private: - short* arr; - short len; -}; - -template<typename T> -class B : public A { -public: - B(short m, char c) : A{m} { - if(typeid(T) == typeid(char)) { - x = c; - } else if(typeid(T) == typeid(string)) { - for(int i = 0; i < m; ++i) - x+=c; - - } else { - // tipo non gestito - throw bad_typeid{}; - } - } - - double f(short a) override { - double n = static_cast<double>(getLen() - a); - double sum{}; - for(int i = a; i < getLen(); ++i) - sum+=get(i); - - return sum/n; - } - - void print(ostream& os) override { - os << "B<" << (typeid(T) == typeid(char) ? "char" : "string") << "> arr=["; - for(int i = 0; i < getLen(); ++i) - os << get(i) << ' '; - os << "], x=" << x; - } - - double foo(short s) { - return log(s) + sin(f(s)); - } -private: - T x; -}; - -class C : public A { -public: - C(short n, int k) : A{n}, y{k} {} - - double f(short a) override { - srand(time(NULL)); - short rand_elem = get(rand()%getLen()); - - return static_cast<double>(a+y)/static_cast<double>(rand_elem); - } - - double g(short w) { - // sicuri che non debba convertire a double? qui sarà sempre 0, forse 1 - return static_cast<double>(sin(w+y)); - } - - void print(ostream& os) override { - os << "C arr=["; - for(int i = 0; i < getLen(); ++i) - os << get(i) << ' '; - os << "], y=" << y; - } - - C& operator++() { - ++y; - return *this; - } -private: - int y; -}; - -ostream& operator<<(ostream& os, A& a) { - a.print(os); - - return os; -} - -int main() { - srand(111222333); - - A *vett[DIM]; - - double max_f3{-100000000.0}; - short c_count{}; - double gsum{}; - short i_to_p{-1}; - - for(int i=0; i<DIM; i++) { - short n=1+rand()%10; - switch(rand()%3) { - case 0: - { - vett[i]= new C(n, rand()%10 + 1); - i_to_p = i; - auto cref = dynamic_cast<C&>(*(vett[i])); - gsum+=cref.g(5); - ++c_count; - break; - } - case 1: - vett[i]= new B<string>(n, rand()%('z' - 'a' + 1) + 'a'); - break; - case 2: - vett[i]= new B<char>(n, rand()%('z' - 'a' + 1) + 'a'); - } - - auto f3 = vett[i]->f(3); - if(f3 > max_f3) - max_f3 = f3; - } - - for(int i = 0; i < DIM; ++i) - cout << i+1 << ')' << *(vett[i]) << ", f(3)=" << vett[i]->f(3) << endl; - - cout << "max f(3)=" << max_f3; - cout << " avg g(5)=" << (static_cast<double>(gsum/c_count)) << endl; - if(i_to_p >= 0) { - cout << *(vett[i_to_p]) << endl; - auto cref = dynamic_cast<C*>(vett[i_to_p]); - ++(*cref); - cout << *(vett[i_to_p]) << endl; - } - - return 0; -} diff --git a/I_anno/Programmazione_1/lab_28_02_19_B.cc b/I_anno/Programmazione_1/lab_28_02_19_B.cc deleted file mode 100644 index 4639f66..0000000 --- a/I_anno/Programmazione_1/lab_28_02_19_B.cc +++ /dev/null @@ -1,162 +0,0 @@ -#include<iostream> -#include<cstdlib> -#include<cmath> -#define DIM 50 -using namespace std; - -class A { -public: - A(short m, char c) : len{m} { - ptr = new char[len]; - srand(time(NULL)); - for(int i = 0; i < m; ++i) { - ptr[i] = static_cast<char>(rand()%(c-'a'+1) + 'a'); - } - } - A(const A& a) = default; - ~A() { - delete ptr; - } - - virtual string elab(short a, char c) = 0; - virtual void print(ostream& o) = 0; - short getLen() { - return len; - } - - char& operator[](int i) { - return ptr[i]; - } - -protected: - char get(short i) { - if(i > len) - return ptr[0]; - - return ptr[i]; - } - -private: - char* ptr; - short len; -}; - -class B : public A { -public: - B(short m, double y, char c) : A{m, c}, x{y} {} - double foo(short s) { - return sin(x+s)/log(x+s); - } - - string elab(short a, char c) { - string st{}; - for(int i = 0; i < getLen(); ++i) { - auto ch = get(i); - if(abs(ch-c) <= a) { - st+=ch; - } - } - - return st; - } - - void print(ostream& os) { - os << "B ptr=["; - for(int i = 0; i < getLen(); ++i) - os << get(i) << ' '; - - os << "], x=" << x << ", elab(5, z)=" << elab(5, 'z'); - } - -private: - double x; -}; - -template<typename T> -class C : public A { -public: - C(short n, double k, char c) : A{n, c} { - if(typeid(T) == typeid(short)) - y = static_cast<int>(100*k); - else - y = k; - } - - string elab(short a, char c) { - string st{}; - if(getLen() >= a) { - if(a >= 1) { - for(int i = 0; i < getLen(); st+=c, ++i); - } - } else { - for(int i = 0; i < getLen(); st += get(i++)); - } - - return st; - } - - double g(short w) { - return sin(w+y); - } - - void print(ostream& os) { - os << "C<" << typeid(T).name() << "> ptr=["; - for(int i = 0; i < getLen(); ++i) - os << get(i) << ' '; - - os << "], y=" << y << ", elab(5, z)=" << elab(5, 'z'); - } -private: - T y; -}; - -ostream& operator<<(ostream& os, A& a) { - a.print(os); - - return os; -} - -int main() { - srand(time(NULL)); - - A *vett[DIM]; - short cb{}, cc{}; - double sumb{}, sumc{}; - - for(int i=0; i<DIM; i++) { - short n=1+rand()%10; - switch(rand()%3) { - case 0: - { - vett[i]= new B(n, (double) rand()/RAND_MAX, rand()%('z' - 'a' + 1) + 'a'); - auto temp = dynamic_cast<B&>(*(vett[i])); - sumb+=temp.foo(5); - ++cb; - break; - } - case 1: - vett[i]= new C<double>(n, (double) rand()/RAND_MAX, rand()%('z' - 'a' + 1) + 'a'); - break; - case 2: - { - vett[i]= new C<short>(n, (double) rand()/RAND_MAX, rand()%('z' - 'a' + 1) + 'a'); - auto temp = dynamic_cast<C<short>&>(*(vett[i])); - sumc+=temp.g(5); - ++cc; - } - } - } - - for(int i=0; i<DIM; i++) { - cout << *vett[i] << endl; - } - - cout << "avg(foo(5))=" << sumb/cb << " "; - cout << "avg(g(5))=" << sumc/cc << endl; - - cout << endl; - cout << *vett[0] << endl; - (*vett[0])[0] = '$'; - cout << *vett[0] << endl; - return 0; -} diff --git a/I_anno/Programmazione_1/lab_28_02_19_C.cc b/I_anno/Programmazione_1/lab_28_02_19_C.cc deleted file mode 100644 index ac53815..0000000 --- a/I_anno/Programmazione_1/lab_28_02_19_C.cc +++ /dev/null @@ -1,185 +0,0 @@ -#include<iostream> -#include<cmath> -#include<set> -#define DIM 10 - -using namespace std; - -class A { -public: - A(short m) : len{m} { - srand(time(NULL)); - base = new char[len]; - for(int i = 0; i < len; ++i) { - base[i] = rand()%('z'-'a'+1)+'a'; - } - } - - ~A() { - delete base; - } - - short getLen() { - return len; - } - - virtual string extract(short x) = 0; - virtual void print(ostream& os) = 0; - -protected: - char get(short i) { - return base[i]; - } - -private: - char* base; - short len; -}; - -class B : public A { -public: - B(short m, double p) : A{m} { - for(int i = 0; i < m; ++i) { - switch(get(i)) { - case 'a': - case 'e': - case 'i': - case 'o': - case 'u': - str+=get(i); - } - } - } - - double foo(short s) { - return sin(k+s)/log(s+1); - } - - string extract(short x) override { - string x2{""}; - short inserted{}; - set<char> chars_a; - for(int i = 0; i < getLen(); ++i) - chars_a.insert(get(i)); - - while(inserted < x) { - char r_char = rand()%('z'-'a'+1)+'a'; - if(chars_a.find(r_char) != chars_a.end()) { - x2+=r_char; - ++inserted; - } - } - - return x2; - } - - void print(ostream& os) override { - os << "B: base=["; - for(int i = 0; i < getLen(); ++i) { - os << get(i) << ' '; - } - os << "], str=" << str << ", k=" << k; - } - -private: - string str; - double k; -}; - -class C : public A { -public: - C(short n, int k) : A{n}, y{k} {} - - double g(short w) { - return sin(w+y); - } - - string extract(short x) override { - string x2{""}; - char* narr = new char[x]; - short counter_narr{}; - - for(int i = 0; i < getLen(); ++i) { - switch(get(i)) { - case 'a': - case 'e': - case 'i': - case 'o': - case 'u': - break; - default: - narr[counter_narr++] = get(i); - } - } - for(int i = 0; i < x; ++i) - x2+=narr[i]; - - delete[] narr; - - return x2; - } - - void print(ostream& os) override { - os << "C: base=["; - for(int i = 0; i < getLen(); ++i) { - os << get(i) << ' '; - } - os << "], y=" << y; - } - - C operator++(int) { - C temp{*this}; - - y++; - - return temp; - } -private: - int y; -}; - -ostream& operator<<(ostream& os, A& a) { - a.print(os); - - return os; -} - -int main() { - A *vett[DIM]; - - double sum{}; - short i_c{-1}; - for(int i=0; i<DIM; i++) { - short n=10+rand()%10; - switch(rand()%2){ - case 0: { - vett[i]= new C(n, rand()%20 + 1); - auto cref = dynamic_cast<C*>(vett[i]); - sum+=cref->g(5); - i_c = i; - break; - } - case 1: { - vett[i]= new B(n, rand()/(double) RAND_MAX); - auto bref = dynamic_cast<B*>(vett[i]); - sum+=bref->foo(5); - break; - } - } - } - - for(int i=0; i<DIM; i++) - cout << *(vett[i]) << ", extract(3)=" << vett[i]->extract(3) << endl; - - cout << sum/DIM << endl; - - if(i_c >= 0) { - cout << *vett[i_c] << endl; - auto cref = dynamic_cast<C*>(vett[i_c]); - (*cref)++; - cout << *vett[i_c] << endl; - - - } - return 0; -} |