// 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);
        }