Website Summary Files Commits Branches @commit @diff @stats
path: root / Week10 / Exercise06.cpp
blob: fdd62a7718c2a9de91912c27646aadf87b7278fb (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
42
43
44
45
#include <iostream>

int main() {
	unsigned int allocated = 4, elements = 0;
	int* numbers = new int[allocated];

	int temp;
	std::cin >> temp;
	while (temp != 0) {
		numbers[elements++] = temp;
		std::cin >> temp;

		/* Реоразмеряваме, ако не ни стига мястото
		 */
		if (elements >= allocated) {
			allocated *= 2;
			int* moreNumbers = new int[allocated];

			for (unsigned int i = 0; i < elements; i++)
				moreNumbers[i] = numbers[i];

			delete[] numbers;
			numbers = moreNumbers;
		}
	}

	if (elements == 1) {
		std::cout << numbers[0] << std::endl;
	}
	else if (elements > 1) {
		/* Нарочно използвам int, за да е по-разбираемо кои индекси ползваме,
		 * иначе този тип е грешен, понеже elements е unsigned int
		 */
		for (int i = elements - 2; i >= 0; i--)
			numbers[i] += numbers[i + 1];

		for (unsigned int i = 0; i < elements; i++)
			std::cout << numbers[i] << ' ';
		std::cout << std::endl;
	}

	delete[] numbers;

	return 0;
}