/// <summary> /// Подстваляет вместо переданной переменной /// </summary> /// <param name="variable"></param> /// <param name="value"></param> internal void Subs(char variable, Fraction value) { Fraction freeMember = VariableAndCoef[variable] * value; FreeMember += freeMember; VariableAndCoef.Remove(variable); }
/// <summary> /// Подставялет вместо переданной переменной какое-то выражение /// </summary> /// <param name="variable"></param> /// <param name="eq"></param> internal void Subs(char variable, Equation eq) { try { Fraction coef = VariableAndCoef[variable]; VariableAndCoef.Remove(variable); //Копируем словарь Dictionary <char, Fraction> vcCopy = new Dictionary <char, Fraction>(); foreach (var vc in eq.VariableAndCoef) { vcCopy.Add(vc.Key, vc.Value); } for (int i = 0; i < vcCopy.Count; i++) { char key = vcCopy.Keys.ElementAt(i); vcCopy[key] *= coef; } foreach (var vs in vcCopy) { if (VariableAndCoef.ContainsKey(vs.Key)) { VariableAndCoef[vs.Key] += vs.Value; } else { VariableAndCoef.Add(vs.Key, vs.Value); } } VariableAndCoef = RemoveZero(VariableAndCoef); FreeMember += eq.FreeMember * coef; } catch (KeyNotFoundException) { throw new ArgumentException("Переданной переменной нет в уравнении", "variable"); } }