c ++ берет формулу из строки - PullRequest
0 голосов
/ 27 февраля 2019

Цель этой программы - взять формулу из пользовательского ввода (я использовал QLineEdit) и построить формулу (используя QCustomPlot для qt).Это часть кода, с которой у меня возникают проблемы:

QVector<double> x(10000), y(10000);
for (int i=0; i<10000; ++i)
{
  double xi = ui->xi_LineEdit->text().toDouble();
  x[i] = xi;
  double yi = ui->yi_LineEdit->text().toDouble();
  y[i] = yi;
}
ui->grafiek->addGraph();
ui->grafiek->graph(0)->setData(x, y);

Этот код сейчас явно не работает.Как мне взять формулу из пользовательского ввода, например xi = i/50.0 - 20 и yi = x[i]*x[i], а обработать это?

1 Ответ

0 голосов
/ 27 февраля 2019

QLineEdit дает вам QString, содержащее математическое выражение.Этот тип не может быть преобразован в double, если он не содержит ничего, кроме двойного.Например, текст «10.34» может быть преобразован из QString в double, но текст «10.34 - 18 + 2» не может, потому что он должен быть оценен первым.

Вам необходимо передать текст QLineEditв синтаксический анализатор математических выражений.Вы можете написать свой собственный, если вам нужно только обрабатывать простую арифметику.Это полезное упражнение, и вы можете найти множество примеров в Интернете, в том числе на SO.Если вам нужен более сложный синтаксический анализ или вы спешите, вы можете воспользоваться Google для C++ math parser или аналогичным и использовать существующий код.

...