我想在一个文本编辑中编写一个方程,并在另一个文本编辑中显示结果。例如,在一篇文本编辑中,我写道:
(3x2+5x-6)
如何只得到上面方程中的数字来解方程?
这是我到目前为止所写的。
void MainWindow::on_input_textChanged()
{
float X =ui->x_value->toPlainText().toFloat();
QString z=ui->input->toPlainText().;
// float r= a*x*x + b*x + c;
// ui->result->setPlainText(QString::number(r));
}
X 是方程中 x 的设定值,z 是方程。
x_value
是获取X值的文本编辑,input
是二次方程的文本编辑。
result
是在另一个文本编辑中显示结果的位置。
r 应该是方程的最终答案。
如何只获取等式或 z 中的数字?
编辑:
这是我到目前为止想到的:
QString z=ui->input->toPlainText();
QList<QList<QString>> myList;
myList.append(z.split("x2"));
QString s1 = myList.at(0).at(0);
float a =s1.toFloat();
z.removeAt(s1);
z.remove("x2");
QList<QList<QString>> myList2;
myList2.append(z.split("x"));
QString s2 = myList2.at(0).at(0);
float b=s2.toFloat();
z.remove(s2);
z.remove("x");
float c=z.toFloat();
float r=a*x*x+b*x+c;
但问题是
z.removeAt(s1);
和 z.remove(s2);
会删除所有与 s1
和 s2
相似的数字。
知道如何解决这个问题吗?
使用 QRegularExpression 解析所需的参数。 这是仅采用方程 a、b、c 系数的正则表达式。
([^x]-?\d+)|(\d+)x