else if (expression.contains("sin", Qt::CaseInsensitive)) { //正弦函数 QStringList list1 = expression.split("sin("); double a = list1[0].toDouble(); QStringList list2= list1[1].split("x)"); double b = list2[0].toDouble(); double c = list2[0].toDouble(); qDebug()<<list2[1]; xValues.append(i); yValues.append(a*qSin(b*i)+c);该段代码中expression是“2sin(2x)+1”,为什么在运行时说使用lis2[1]超出了数组范围
时间: 2024-01-05 09:03:19 浏览: 13
在你的代码中,`list2` 只包含两个元素,即 `list2[0]` 和 `list2[1]`,而你在第六行中尝试输出 `list2[1]`。这就导致了数组越界错误。
通过查看你提供的代码,我们可以发现 `list2[1]` 不是你所需要的值。你需要找到包含 `x)` 的字符串,而不是 `)`。因此,你可以将第六行代码修改为:
```
qDebug() << list2[1].split(")").at(0);
```
这将提取 `x` 后面的内容并输出。或者,你也可以修改第四行代码,以便将 `x)` 拆分成两个元素,如下所示:
```
QStringList list2= list1[1].split("x)");
double b = list2[0].mid(1).toDouble();
double c = list2[1].mid(1).toDouble();
```
这将提取 `x` 前面和后面的内容,并且不需要使用 `list2[1]`。
相关问题
else if (expression.contains("sin", Qt::CaseInsensitive)) { //正弦函数 QStringList list1 = expression.split("sin("); double a = list1[0].toDouble(); QStringList list2= list1[1].split("x)"); double b = list2[0].toDouble(); double c = list2[1].toDouble(); xValues.append(i); yValues.append(aqSin(bi)+c);在这段代码中expression是2sin(2x)+1,那么list2[1]是多少,使用list[1]会超越数组范围吗
在这段代码中,当 `expression` 为 `2sin(2x)+1` 时,`list2[1]` 会超出数组范围,因为 `list2` 中只有两个元素:`list2[0]` 是 `"2"`,`list2[1]` 是 `"x)"`。可以使用`if`语句检查`list2`中是否有第三个元素,如果没有,则说明该项是常数项而非常数值,可以将其设为0。修改后的代码如下:
```cpp
else if (expression.contains("sin", Qt::CaseInsensitive)) { //正弦函数
QStringList list1 = expression.split("sin(");
double a = list1[0].toDouble();
QStringList list2= list1[1].split("x)");
double b = list2[0].toDouble();
double c = 0; // 初始化常数项为0
if (list2.length() > 1) { // 如果有第三个元素,则说明该项是常数值
c = list2[1].toDouble();
}
xValues.append(i);
yValues.append(aqSin(bi)+c);
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)