Я делаю программу на C#, которая берет уравнение из пользовательского ввода и оценивает его. На данный момент у меня есть способ вычисления пользователя, а также значения из хранимых переменных, таких как x. Уравнение, которое войдет, будет примерно 2.0 * 78 * 4X/3
.Вычисление строковых значений
В настоящее время я могу заменить X
на значение, связанное с ним. Однако мне нужен способ поиска строки и нахождения X
, тогда, если X
имеет номер перед этим, умножая X * X
, это количество раз. В приведенном выше примере это будет 4 раза.
Лучше всего использовать метод IndexOf
или разбить строку на подстроки?
Все, что я хочу, чтобы иметь возможность найти погоду X
имеет номер перед этим; если нет, то просто введите значение X
, иначе если X
имеет номер перед его умножением X*X
сказал, что раз.
Это код, который я могу найти X
, к полученным данным. В идеале я хотел бы содержать любой код жгутов следующее:
if (name == "x" || name == "X")
{
args.Result = x; // Returns value of x
}
Это все остальная часть кода
var e = new Expression(input);
// Set up a custom delegate so NCalc will ask you for a parameter's value
// when it first comes across a variable
e.EvaluateParameter += delegate(string name, ParameterArgs args)
{
if (name == "x" || name == "X")
{
args.Result = x; // Returns value of x
}
else if (name == "y" || name == "Y")
{
//....
}
else if (name == "z" || name == "Z")
{
//....
}
// Or if the names match up you might be able to something like:
// args.Result = dataRow[name];
};
//var result =
return e.Evaluate();
FYI, '4X' не' X * X' 4 раза; это будет 'X^4'. '4X' -' X + X + X + X'. – joce