Example #1
0
        Arithme Calc(List <Arithme> lNext)
        {
            var tt = lNext.FindAll(vx => vx.Operation != null).OrderBy(vy => vy.Operation.Order).ToList();

            if (tt.Count > 0)
            {
                try
                {
                    foreach (var arithme in tt)
                    {
                        int ind = lNext.IndexOf(arithme);

                        double.TryParse(lNext[ind - 1].Svalue, out double val1);
                        double.TryParse(lNext[ind + 1].Svalue, out double val2);

                        if (NewMath.IsFunctionExiste(lNext[ind - 1].Svalue))
                        {
                            double.TryParse(NewMath.ExecuteFunction(lNext[ind - 1].Svalue), out val1);
                        }
                        if (NewMath.IsFunctionExiste(lNext[ind + 1].Svalue))
                        {
                            double.TryParse(NewMath.ExecuteFunction(lNext[ind + 1].Svalue), out val2);
                        }

                        var res = Calculate(val1, val2, arithme.Operation.Signe);

                        lNext.RemoveAt(ind - 1);
                        lNext.RemoveAt(ind - 1);
                        lNext.RemoveAt(ind - 1);

                        lNext.Insert(ind - 1, new Arithme(res.ToString(), null));
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Une erreur est survenue lors du calcule de votre chaine, Merci de le verifier");
                }
            }
            else
            {
                try
                {
                    if (NewMath.IsFunctionExiste(lNext[0].Svalue))
                    {
                        string result = NewMath.ExecuteFunction(lNext[0].Svalue);
                        lNext.Clear();
                        lNext.Add(new Arithme(result, null));
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Une erreur est survenue lors du calcule de votre chaine, Merci de le verifier");
                }
            }

            return(lNext.Single());
        }