summaryrefslogtreecommitdiff
path: root/Year_1/Programming_1/ex2_27_01_20.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Year_1/Programming_1/ex2_27_01_20.cc')
-rw-r--r--Year_1/Programming_1/ex2_27_01_20.cc57
1 files changed, 57 insertions, 0 deletions
diff --git a/Year_1/Programming_1/ex2_27_01_20.cc b/Year_1/Programming_1/ex2_27_01_20.cc
new file mode 100644
index 0000000..25caf5b
--- /dev/null
+++ b/Year_1/Programming_1/ex2_27_01_20.cc
@@ -0,0 +1,57 @@
+#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;
+}