// calculate numbers public ArrayList Calculate(ArrayList arr) { int result = 0; operatorsAndNumber N = new operatorsAndNumber(); if (arr.Contains("*") || arr.Contains("/")) { for (int DivMulLoop = 0; DivMulLoop < arr.Count; DivMulLoop++) { if (arr[DivMulLoop].ToString().Equals("*") && CheckNum(arr[DivMulLoop - 1].ToString()) && CheckNum(arr[DivMulLoop + 1].ToString())) { Operator o = N.CheckOperators("*"); result = N.calculation(Int32.Parse(arr[DivMulLoop - 1].ToString()), Int32.Parse(arr[DivMulLoop + 1].ToString()), o); arr.Remove(arr[DivMulLoop - 1]); arr.Remove(arr[DivMulLoop - 1]); arr.Remove(arr[DivMulLoop - 1]); arr.Insert(DivMulLoop - 1, result); } else if (arr[DivMulLoop].ToString().Equals("/") && CheckNum(arr[DivMulLoop - 1].ToString()) && CheckNum(arr[DivMulLoop + 1].ToString())) { Operator o = N.CheckOperators("/"); result = N.calculation(Int32.Parse(arr[DivMulLoop - 1].ToString()), Int32.Parse(arr[DivMulLoop + 1].ToString()), o); arr.Remove(arr[DivMulLoop - 1]); arr.Remove(arr[DivMulLoop - 1]); arr.Remove(arr[DivMulLoop - 1]); arr.Insert(DivMulLoop - 1, result); } } } else if (arr.Contains("+") || arr.Contains("-")) { for (int AddSubLoop = 0; AddSubLoop < arr.Count; AddSubLoop++) { if (arr[AddSubLoop].ToString().Equals("+") && CheckNum(arr[AddSubLoop - 1].ToString()) && CheckNum(arr[AddSubLoop + 1].ToString())) { Operator o = N.CheckOperators("+"); result = N.calculation(Int32.Parse(arr[AddSubLoop - 1].ToString()), Int32.Parse(arr[AddSubLoop + 1].ToString()), o); arr.Remove(arr[AddSubLoop - 1]); arr.Remove(arr[AddSubLoop - 1]); arr.Remove(arr[AddSubLoop - 1]); arr.Insert(AddSubLoop - 1, result); } else if (arr[AddSubLoop].ToString().Equals("-") && CheckNum(arr[AddSubLoop - 1].ToString()) && CheckNum(arr[AddSubLoop + 1].ToString())) { Operator o = N.CheckOperators("-"); result = N.calculation(Int32.Parse(arr[AddSubLoop - 1].ToString()), Int32.Parse(arr[AddSubLoop + 1].ToString()), o); arr.Remove(arr[AddSubLoop - 1]); arr.Remove(arr[AddSubLoop - 1]); arr.Remove(arr[AddSubLoop - 1]); arr.Insert(AddSubLoop - 1, result); } } } return(arr); }
// if there is * or/ in equation, simplify the equation first public ArrayList SimplicationNum(ArrayList arr) { int result = 0; operatorsAndNumber N = new operatorsAndNumber(); for (int Loopcon = 0; Loopcon < arr.Count; Loopcon++) { if ((arr[Loopcon].ToString().Equals("*") || arr[Loopcon].ToString().Equals("/")) && CheckNum(arr[Loopcon - 1].ToString()) && CheckNum(arr[Loopcon + 1].ToString())) { if (arr[Loopcon].ToString().Equals("*")) { Operator o = N.CheckOperators("*"); result = N.calculation(Int32.Parse(arr[Loopcon - 1].ToString()), Int32.Parse(arr[Loopcon + 1].ToString()), o); arr.Remove(arr[Loopcon - 1]); arr.Remove(arr[Loopcon - 1]); arr.Remove(arr[Loopcon - 1]); arr.Insert(Loopcon - 1, result); } else if (arr[Loopcon].ToString().Equals("/")) { Operator o = N.CheckOperators("/"); result = N.calculation(Int32.Parse(arr[Loopcon - 1].ToString()), Int32.Parse(arr[Loopcon + 1].ToString()), o); arr.Remove(arr[Loopcon - 1]); arr.Remove(arr[Loopcon - 1]); arr.Remove(arr[Loopcon - 1]); arr.Insert(Loopcon - 1, result); } } else if (arr[Loopcon].ToString().Equals("*") && CheckNum(arr[Loopcon - 1].ToString()) && (arr[Loopcon + 1].ToString().Equals("x") || arr[Loopcon + 1].ToString().Equals("X"))) { string strResult = string.Concat(arr[Loopcon - 1].ToString(), arr[Loopcon + 1]); arr.Remove(arr[Loopcon - 1]); arr.Remove(arr[Loopcon - 1]); arr.Remove(arr[Loopcon - 1]); arr.Insert(Loopcon - 1, strResult); } } return(arr); }