diff options
Added my work from todays up exam
1 files changed, 41 insertions, 0 deletions
| -rw-r--r-- | Year 1/Programming introduction/Exams/Exam2/prob3.cpp | 41 |
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; +} |
