public FormulaExpressionPart(FormulaExpression expression, string stringExpressionPart) { this.Expression = expression; this.Variables = new Dictionary<string, string>(); _calc = new CalculationEngine(); this.StringExpressionPart = stringExpressionPart; }
public MainPage() { InitializeComponent(); NavigationCacheMode = NavigationCacheMode.Required; calcEngine = new CalculationEngine(); resetCalculator(); }
/// <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); }
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; }
/// <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(); }
private void Calculate() { CalculationEngine engine = new CalculationEngine(); Result = (decimal)engine.Calculate(Expression.Replace('÷', '/').Replace('×', '*')); }
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(); }
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(); }
public CheckExpressionPart(CheckExpression expression) { this.Expression = expression; this.Variables = new Dictionary<string, string>(); _calc = new CalculationEngine(); }
/// <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(); }