Problem out of range with stack class

I'm trying to create a calculator that contains two stacks. One stack contains all the numbers and another contains the operands such as */+- etc. Every time i run my program it says the subscript goes out of range and i can't figure out where the issue is.

This is where i run my solution.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
int solution(MyStack<char> stackC, MyStack<int> stackN)
{
	int sum = 0; //total returned value at conclusion
	int temp=0; //temp value that stores values from previous methods 
	for(int i = 0; i < 3; i++) //first step parenthesis,then mult/division,then addition/subtraction
	{
		for(int j = 0; j < stackC.amountOfInfoContained(); j++)
		{
			dispStacks(stackC,stackN);
			switch(i)
			{
/*				case 0:
					{
					}*/
				case 1: //mult and division
					{
						if(stackC.containedElement(j) == '*')
						{
							temp = multiply(stackN.containedElement(j),stackN.containedElement(j+1));
							stackN.atElement(j,temp);
							stackN.removeAt(j+1);
							stackC.removeAt(j);
							sum+=temp;
						}
						if(stackC.containedElement(j) == '/')
						{
							temp = divide(stackN.containedElement(j),stackN.containedElement(j+1));
							stackN.atElement(j,temp);
							stackN.removeAt(j+1);
							stackC.removeAt(j);
							sum+=temp;
						}

						break;
					}
				case 2: //addition and subtraction
					{
						if(stackC.containedElement(j) == '+')
						{
							temp = addition(stackN.containedElement(j),stackN.containedElement(j+1));
							stackN.atElement(j,temp);
							stackN.removeAt(j+1);
							stackC.removeAt(j);
							sum+=temp;
						}
						if(stackC.containedElement(j) == '-')
						{
							temp = subtraction(stackN.containedElement(j),stackN.containedElement(j+1));
							stackN.atElement(j,temp);
							stackN.removeAt(j+1);
							stackC.removeAt(j);
							sum+=temp;
						}
						break;
					}
			}

		}
	}
		return sum;
}


This is my stack class.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
template<typename T>
MyStack<T>::MyStack()
{
	MyStack::size = -1;
}
template<typename T>
MyStack<T>::~MyStack(void)
{
}
template<typename T>
int MyStack<T>::amountOfInfoContained()
{
	return MyStack::size;
}
template<typename T>
T MyStack<T>::pushBack()
{
	if(MyStack::empty() == true)
	{
		return;
	}
	else
	{
		stacks.pop_back();
		MyStack::size = size-1;
		return disks(size+1);
	}
}
template<typename T>
void MyStack<T>::addElement(T newInfo)
{
	MyStack::size = size+1;
	MyStack::stacks.push_back(newInfo);
}
template<typename T>
bool MyStack<T>::empty()
{
	if(MyStack::stacks.empty())
	{
		return true;
	}
	else
		return false;
}
template<typename T>
T MyStack<T>::containedElement(int element)
{
	return MyStack::stacks[element];
}
template<typename T>
bool MyStack<T>::emptyAt(int element)
{
	if(MyStack::stacks[element]== NULL)
		return true;
	else 
		return false;
}
template<typename T>
void MyStack<T>::removeAt(int element)
{
	stacks.erase(stacks.begin()+element-1);
	updateStack();
}
template<typename T>
void MyStack<T>::updateStack()
{
	int count = 0;
	int temp = 0;

	do
	{
		if(emptyAt(count) == true)
		{
			size--;
			for(int i = count; i < size; i++)
			{
				stacks[i] = stacks[i+1];
			}
		}
		count++;
	}while(count < size);
}
template<typename T>
void MyStack<T>::atElement(int element,T value)
{
	stacks[element] = value;
}



Any help would be grateful. Thank you
Topic archived. No new replies allowed.