Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Programming introduction / Exams / Exam2 / prob3.cpp
blob: 8f1a85a031396d3a4ebc3783b44d2c275e9b6a31 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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;
}