Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commit3d7b742eb8e9012e21a0516ad21fc7aefd043bf7 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-01-11 10:09:44 +0200
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-01-11 10:09:44 +0200
Filesda790d25fcfa3251a8f57ee531c6a4fddd64804e
uni-projects-3d7b742eb8e9012e21a0516ad21fc7aefd043bf7.tar
uni-projects-3d7b742eb8e9012e21a0516ad21fc7aefd043bf7.tar.gz
uni-projects-3d7b742eb8e9012e21a0516ad21fc7aefd043bf7.zip
Parenta6fd917db5d633aecfe0307b016108e78dd2f4f7 (diff)
Added my work from todays up exam
diff --git a/Year 1/Programming introduction/Exams/Exam2/README.md b/Year 1/Programming introduction/Exams/Exam2/README.md
new file mode 100644
index 0000000..d236f2b
--- /dev/null
+++ b/Year 1/Programming introduction/Exams/Exam2/README.md
@@ -0,0 +1,2 @@
+**Exam Date**: 11.01.2022
+**Grade**: TBD
diff --git a/Year 1/Programming introduction/Exams/Exam2/prob1.cpp b/Year 1/Programming introduction/Exams/Exam2/prob1.cpp
new file mode 100644
index 0000000..76d3971
--- /dev/null
+++ b/Year 1/Programming introduction/Exams/Exam2/prob1.cpp
@@ -0,0 +1,34 @@
+#include <iostream>
+
+bool isAlphanumeric(char ch) {
+ return (ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');
+}
+
+char* minWord(char *str) {
+ int startIndex = 0;
+ while (str[startIndex] != '\0' && !isAlphanumeric(str[startIndex]))
+ startIndex++;
+
+ char *ptr = &str[startIndex];
+
+ for (int i = startIndex, wordStart = 0; str[i] != '\0'; i++) {
+ for (int j = i; isAlphanumeric(str[i]) && isAlphanumeric(ptr[wordStart]); i++, wordStart++) {
+ if (str[i] < ptr[wordStart])
+ ptr = &str[j];
+ else if (str[i] != ptr[wordStart])
+ break;
+ }
+ wordStart = 0;
+ }
+
+ return ptr;
+}
+
+int main() {
+ char input[] = "me? why always me?";
+ char *str = minWord(input);
+
+ for (int i = 0; str[i] != '\0'; i++)
+ std::cout << str[i];
+ std::cout << std::endl;
+}
diff --git a/Year 1/Programming introduction/Exams/Exam2/prob2.cpp b/Year 1/Programming introduction/Exams/Exam2/prob2.cpp
new file mode 100644
index 0000000..72cb50e
--- /dev/null
+++ b/Year 1/Programming introduction/Exams/Exam2/prob2.cpp
@@ -0,0 +1,60 @@
+#include <iostream>
+
+const int MAX_SIZE = 30;
+
+bool hasRepeatedDigits(int n) {
+ for (int lastDigit = 0; n != 0; n /= 10) {
+ lastDigit = n % 10;
+ for (int tmp = n / 10; tmp != 0; tmp /= 10) {
+ if (tmp % 10 == lastDigit)
+ return true;
+ }
+ }
+ return false;
+}
+
+int getRepeatedLen(int matrix[MAX_SIZE][MAX_SIZE], int n) {
+ int arrSize = 0;
+ for (int col = 0, row = n - 1; col < n && row < n; col = (row > 0) ? 0 : col + 1, row = (row > 0) ? row - 1 : 0) {
+ for (int k = col, l = row; k < n && l < n; k++, l++) {
+ if (hasRepeatedDigits(matrix[l][k]))
+ arrSize++;
+ }
+ }
+ return arrSize;
+}
+
+int* collect(int matrix[MAX_SIZE][MAX_SIZE], int n) {
+ int arrSize = getRepeatedLen(matrix, n);
+ int *arr = new int[arrSize];
+
+ for (int col = 0, row = n - 1, arrI = 0; col < n && row < n; col = (row > 0) ? 0 : col + 1, row = (row > 0) ? row - 1 : 0) {
+ for (int k = col, l = row; k < n && l < n; k++, l++) {
+ if (hasRepeatedDigits(matrix[l][k]))
+ arr[arrI++] = matrix[l][k];
+ }
+ }
+
+ return arr;
+}
+
+int main() {
+ int n;
+ std::cin >> n;
+
+ int matrix[MAX_SIZE][MAX_SIZE];
+ for (int i = 0; i < n; i++) {
+ for (int j = 0; j < n; j++)
+ std::cin >> matrix[i][j];
+ }
+
+ int *repeated = collect(matrix, n);
+ int repeatedLen = getRepeatedLen(matrix, n); // По условие няма как иначе да върнем размера
+
+ for (int i = 0; i < repeatedLen; i++) {
+ std::cout << repeated[i] << " ";
+ }
+ std::cout << std::endl;
+
+ delete[] repeated;
+}
diff --git a/Year 1/Programming introduction/Exams/Exam2/prob3.cpp b/Year 1/Programming introduction/Exams/Exam2/prob3.cpp
new file mode 100644
index 0000000..8f1a85a
--- /dev/null
+++ b/Year 1/Programming introduction/Exams/Exam2/prob3.cpp
@@ -0,0 +1,41 @@
+#include <iostream>
+
+int getLetterValue(char letter, int n, char *letters, int *values) {
+ for (int i = 0; i < n; i++) {
+ if (letters[i] == letter)
+ return values[i];
+ }
+ return 0;
+}
+
+int calculate(char *str, int n, char *letters, int *values) {
+ if (str[1] == '\0')
+ return getLetterValue(str[0], n, letters, values);
+
+ int sum = 0, prod = getLetterValue(str[0], n, letters, values);
+
+ for (int i = 1; str[i] != '\0'; i++) {
+ if (str[i] == '+') {
+ sum += prod;
+ prod = 1;
+ }
+ else if (str[i] != '.')
+ prod *= getLetterValue(str[i], n, letters, values);
+ }
+
+ sum += prod;
+
+ return sum;
+}
+
+int main() {
+ char str[] = "a.b+b.c+d+a.c";
+ char letters[] = { 'a', 'b', 'c', 'd' };
+ int values[] = { 2 , 5 , 3 , 42 };
+ std::cout << calculate(str, 4, letters, values) << std::endl;;
+
+ char str1[] = "h.e.l.l.o+w.o.r.l.d";
+ char letters1[] = { 'd', 'e', 'h', 'l', 'o', 'r' };
+ int values1[] = { 3 , 2 , 3 , 1 , 5 , 10 };
+ std::cout << calculate(str1, 6, letters1, values1) << std::endl;
+}