public void interpretMainEquation() { string tempMainEquation = mainEquation; string topBracket; EquationReturnStruct tempStruct = new EquationReturnStruct(); while(EquationCheck.isSolved(tempMainEquation) == false) { BracketFinder.clearBrackets(ref tempMainEquation); if (EqBracketCheck.hasBracketEquation(tempMainEquation) == true) { topBracket = BracketFinder.getTopBracket(tempMainEquation); tempStruct = EquationSolver.solveSingleEquation(topBracket); saveSingleEquation(tempStruct); MainEquationUpdater.updateMainTempEquation(ref tempMainEquation, tempStruct); } else { tempStruct = EquationSolver.solveSingleEquation(tempMainEquation); saveSingleEquation(tempStruct); MainEquationUpdater.updateMainTempEquation(ref tempMainEquation, tempStruct); } } BracketFinder.clearBrackets(ref tempMainEquation); //this.solution = partialEquations[partialEquations.Count() - 1].solution; this.solution = tempMainEquation; }
public static void updateMainTempEquation(ref string tempMainEquation, EquationReturnStruct tempStruct) { string equationToReplace = tempStruct.equation; string equationSolution = tempStruct.solution; StringBuilder sb = new StringBuilder(); int startIndex = 0; int endIndex = 0; bool loopIsDone = false; int replaceIndex = 0; BracketFinder.clearBrackets(ref tempMainEquation); for(int i = 0; i < tempMainEquation.Length; i++) { if(tempMainEquation[i] == equationToReplace[replaceIndex]) { startIndex = i; while (tempMainEquation[i] == equationToReplace[replaceIndex]) { i++; replaceIndex++; if(replaceIndex == equationToReplace.Length) { endIndex = i - 1; loopIsDone = true; } if (loopIsDone == true) { break; } } } if (loopIsDone == true) { break; }else { startIndex = 0; endIndex = 0; if(replaceIndex != 0) { i--; } replaceIndex = 0; } } sb.Append(tempMainEquation); sb.Remove(startIndex, endIndex - startIndex + 1); sb.Insert(startIndex, equationSolution); tempMainEquation = sb.ToString(); }
public void saveSingleEquation(EquationReturnStruct temp) { PartialEquation tempPart = new PartialEquation(); tempPart.a = temp.a; tempPart.b = temp.b; tempPart.sign = temp.sign; tempPart.equation = temp.equation; tempPart.solution = temp.solution; this.partialEquations.Add(tempPart); }
public static EquationReturnStruct solveSingleEquation(string input) { EquationReturnStruct tempStruct = new EquationReturnStruct(); List<string> numberList = new List<string>(); List<string> signList = new List<string>(); StringBuilder sb = new StringBuilder(); CalculationListBuilder.buildCalculationLists(input, ref numberList, ref signList); EquationCalculationManager.calculateSingleEquation(ref tempStruct, numberList, signList); return tempStruct; }
public static void calculateSingleEquation(ref EquationReturnStruct tempStruct, List<string> numberList, List<string> signList) { string result = "0"; int index = 0; if(CalculationListCheck.hasMultiplication(signList) == true) { index = CalcListElementGet.getFirstMultiplicationIndex(signList); } else if(CalculationListCheck.hasAddition(signList) == true) { index = CalcListElementGet.getFirstAdditionIndex(signList); } result = CalculationPerformer.performCalculation(numberList[index], numberList[index + 1], signList[index]); tempStruct.a = numberList[index]; tempStruct.b = numberList[index + 1]; tempStruct.sign = signList[index]; tempStruct.equation = numberList[index] + signList[index] + numberList[index + 1]; tempStruct.solution = result; }