コード例 #1
0
 public FormulaExpressionPart(FormulaExpression expression, string stringExpressionPart)
 {
     this.Expression = expression;
     this.Variables = new Dictionary<string, string>();
     _calc = new CalculationEngine();
     this.StringExpressionPart = stringExpressionPart;
 }
コード例 #2
0
ファイル: MainPage.xaml.cs プロジェクト: fazed/WPMinor
        public MainPage()
        {
            InitializeComponent();

            NavigationCacheMode = NavigationCacheMode.Required;

            calcEngine = new CalculationEngine();
            resetCalculator();
        }
コード例 #3
0
        /// <summary>
        /// Initializes this instance.
        /// </summary>
        public override void Initialize()
        {
            Console.WriteLine("Type the equation:");
            Console.WriteLine("Samples:");
            Console.WriteLine("     3*x - 2*y + 4*z = 7");
            Console.WriteLine("     x * y - 3 * z + t = 8");
            Console.WriteLine("     a + b * c + d - f / g = 1000");
            Console.WriteLine("     a*x^2 + b * x + c = 100");
            Console.WriteLine("     a^3 - 4*b^2 + 3*c - 4 = 0");

            m_equation = Console.ReadLine();

            var equationParts = m_equation.Split('=');
            m_equationLeftPart = equationParts[0];
            m_equationRightPart = equationParts[1];

            var reader = new TokenReader();
            var tokens = reader.Read(m_equationLeftPart);
            m_variables = new List<string>();

            foreach (var token in tokens)
            {
                if (token.TokenType == TokenType.Text)
                {
                    var value = token.Value as string;

                    if (!m_variables.Contains(value))
                    {
                        m_variables.Add(value);
                    }
                }
            }

            var engine = new CalculationEngine();
            m_equationResult = (int)engine.Calculate(m_equationRightPart);
        }
コード例 #4
0
        private int GetEquationResult(Gene[] genes)
        {
            var variableValues = new Dictionary<string, double>();

            for (int i = 0; i < m_variables.Count; i++)
            {
                variableValues.Add(m_variables[i], (int)genes[i].Value);
            }

            var engine = new CalculationEngine();
            var result = engine.Calculate(m_equationLeftPart, variableValues);

            return (int)result;
        }
コード例 #5
0
        /// <summary>
        ///     Парсим функцию
        /// </summary>
        /// <param name="functionText"></param>
        private void ParseFunction(string functionText)
        {
            if (functionText.Contains(':'))
                functionText = functionText.Remove(0, functionText.IndexOf(':') + 1);

            var index = 0;
            _varCount = 0;

            while (index != -1)
            {
                index = functionText.IndexOf("x", index, StringComparison.Ordinal);
                if (index == -1) break;
                try
                {
                    int num;
                    if (int.TryParse(functionText.Substring(index + 1, 1), out num))
                    {
                        _varCount = (_varCount < num) ? num : _varCount;
                    }
                    index++;
                }
                catch (Exception)
                {
                    index++;
                }
            }

            var engine = new CalculationEngine();
            var formula = engine.Build(functionText);

            //кастим на нужную функцию
            _currFunction = doubles =>
            {
                var variables = new Dictionary<string, double>();
                for (var i = 0; i < doubles.Count; i++)
                {
                    variables.Add($"x{i + 1}", doubles[i]);
                }
                return formula(variables);
            };

            _functionChosen = true;
            UpdateForm();
        }
コード例 #6
0
        private void Calculate()
        {
            CalculationEngine engine = new CalculationEngine();

            Result = (decimal)engine.Calculate(Expression.Replace('÷', '/').Replace('×', '*'));
        }
コード例 #7
0
ファイル: TechFormula.cs プロジェクト: VLunev/RachetRR4
 protected TechFormula(string Variable, string Formula, string Description, string mu, string ReferenceBibliography)
 {
     CalcEngine = new CalculationEngine();
     ListVariable = new List<TechFormula>();
     MainVariable = Variable;
     MainDescription = Description;
     Result = 0;
     GoodResult = false;
     MU = mu;
     ReferenceBibl = ReferenceBibliography;
     LastErrorStr = "";
     DrawFormula = Formula;
     MainFormula = Formula;
     MainFormula = MainFormula.Replace('[', '(');
     MainFormula = MainFormula.Replace(']', ')');
     MainFormula = MainFormula.Replace('∙', '*');
     MainFormula = MainFormula.Replace('.', ',');
     MainFormula = MainFormula.Replace("√", "Sqrt");
     MainFormula = MainFormula.Replace("<=", "≤");
     MainFormula = MainFormula.Replace("=<", "≤");
     MainFormula = MainFormula.Replace(">=", "≥");
     MainFormula = MainFormula.Replace("=>", "≥");
     GetResult();
 }
コード例 #8
0
ファイル: Highlight.cs プロジェクト: TNOCS/csTouch
 private void CreateResultFormula(string formula)
 {
     if (string.IsNullOrEmpty(formula)) return;
     MathFormula = formula;
     var engine = new CalculationEngine(CultureInfo.InvariantCulture);
     var formulaBuilder = engine.Formula(mathFormula).Result(Jace.DataType.FloatingPoint);
     var variable = 'a';
     for (var i = 0; i < criteria.Count; i++)
         formulaBuilder.Parameter("" + variable++, Jace.DataType.FloatingPoint);
     resultFormula = formulaBuilder.Build();
 }
コード例 #9
0
 public CheckExpressionPart(CheckExpression expression)
 {
     this.Expression = expression;
     this.Variables = new Dictionary<string, string>();
     _calc = new CalculationEngine();
 }
コード例 #10
0
ファイル: SqlQueryOptions.cs プロジェクト: TNOCS/csTouch
 /// <summary>
 /// Converts the formula to a standard form, i.e. 
 ///     {4}*{5} => a*b
 /// Where
 ///     a is inputParameters[0],
 ///     b is inputParameters[1], etc.
 /// </summary>
 private object MathFormula(IReadOnlyList<SqlInputParameter> sqlInputParameters)
 {
     if (currentMathFormula != null) return currentMathFormula;
     inputParameters.Clear();
     var parameter = 'a';
     var formula = DesiredResultFormula;
     var index = 0;
     while (formula.Contains("{") && index < sqlInputParameters.Count)
     {
         var lookFor = string.Format("{{{0}}}", index++); // {0}, {1} etc.
         if (!formula.Contains(lookFor)) continue;
         formula = formula.Replace(lookFor, "" + parameter++);
         inputParameters.Add(sqlInputParameters[index-1]);
     }
     var engine = new CalculationEngine(CultureInfo.InvariantCulture);
     var formulaBuilder = engine.Formula(formula).Result(DataType.FloatingPoint);
     parameter = 'a';
     for (var i = 0; i < inputParameters.Count; i++)
         formulaBuilder.Parameter("" + parameter++, DataType.FloatingPoint);
     return currentMathFormula = formulaBuilder.Build();
 }