/*
Pseudo code
We are trying to solve a term like "a+(b*c-a)*(c/b)"
1. Validate eqaution (1b part not important, but hard still)
1a. Remove redundant spaces and brackets, eg convert a *b to a*b, and convert b+(a) to b+a
1b. Check for invalid characters, and operators, also check for typos eg print error if a*+b is used.
2. Search term for position of most precedence operator and respect all brackets
2a. Search for the most precedence operator. Start looking for any '*'
2b. When found, check if it is indeed the most precedent by checking if its operands have brackets eg a*(b..
2c. If operands have brackets, continue searching the term for another '*'
2d. If operands do not have brackets, most precedence operator is found and return its handle
2e. If '*' is not found, search for '/' (because we cannot calculate any '*' at this point)
2f. Repeat the same proceedure so far, until we can execute something.
2g. When we found something we return the position of the opertator handle to be calculated.
2h. For every use of this search, we must start at 2a or initialize properly.
3. Calulate the result of the operation using the operands on the left and right of that position and save it
3a By using the operator position, take the operands and the operator handles to our calculator, eg 'a' 'c' and '*'
3b Use the handles 'a' and 'c' to load to floating point values for calulation.
3c Save the floating point result into a array of temporary results, using an empty or un-used slot in the array.
3d Pass the handle of this tempoary result back as a return, eg return 'q01' which is our handle to a temporary result which is located in the array in position q01=1st position. The tracking of empty result slots are handled here.
3e Update the equation by inserting the new handle "q01" as a replacement for the previous "a*c", clean up redundant spaces and brackets again eg "(q01)" becomes 'q01'
4. Loop until done.
class TermSolver
OriginalEquation
ModifiedEquation
ParameterValues
ParameterHandles
OperaterList
*/