Example #1
0
        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();
		}
Example #3
0
		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);
		}
Example #4
0
		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;
		}