【发布时间】:2022-01-23 06:21:28
【问题描述】:
所以,我正在尝试编写一个程序,该程序最终将创建一个二维数组,该数组将包含用户输入字符串中数学运算符的位置。因此,例如,如果用户输入 2+5-3,我希望我的数组类似于 {{+,1}{-,3}}。我打算只使用一个整数数组和一个已知的从 +,-,/,*,^ 到 1,2,3,4,5 的翻译。但是,当我尝试测试它说“字符串下标超出范围”时,我不断抛出一个异常,然后我的 IDE 在我的 if 语句上放置一个错误代码,内容为“一个无效参数已传递给一个认为无效参数致命的函数”。有什么想法我搞砸了?
#include <iostream>
#include <string>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <climits>
using namespace std;
int main()
{
equationstart:
string eq;
int posOp[50][2];
int i;
int i2 = 0;
int i3;
getline(cin, eq);
for (i = 0; i <= 49; i++) {
if (eq[i] == '+') {
posOp[i2][0] = 1;
posOp[i2][1] = i;
i2++;
}
}
for (i = 0; i <= 49; i++) {
for (i3 = 0; i3 <= 1; i3++) {
cout << posOp[i][i3];
}
cout << endl;
}
cout << endl;
goto equationstart;
}
现在我要做的就是填充数组,然后将获取的数组显示到屏幕上,这样我就可以看到它正在工作。
【问题讨论】:
-
您输入的行中可能没有输入 50 个字符。您假设 eq 至少有 50 个字符:
if (eq[i] == '+') { -
不推荐 goto,改用 while 循环,用 goto 打破重度嵌套循环,一般避免 goto
-
已经修复了,谢谢,不好意思
-
在最后的函数中,它是对不同函数的调用,我只是将 goto 用于测试目的,所以程序会自动重复整个程序
-
如果用户输入 2+5-3,我希望我的数组类似于 {{+,1}{-,3}}。 我没有看到对数组执行此操作的代码。该数组也是一个整数数组。
标签: c++