我试图从数组元素中形成最大数字。我在下面给出的实现对于某些情况和其他一些给出错误的工作正常 “中止信号(3)(SIGABRT)”。为什么?救救我!
{name:"some one", permissions:{restrictedArea:false,sandbox:true}} //and so on...
对于以下情况,我的代码给出错误
4 //size of array 54 546 548 60 //elements of array
答案 0 :(得分:0)
这是由于函数stoi这对于字符串到int转换的使用没有很大的作用
手动将字符串转换为int Algo如下所示;
int x=0; // may take long long
for(int i=0;i<s.length();i++)
x=x*i+s[i]-'0';
x是字符串的int值。
答案 1 :(得分:0)
这是由于INT_MAX和INT_MIN值,即2 ^ 31-1和-2 ^ 31,它们不能存储在整数类型数据中; 也 int z = stoi(string x)转换并将字符串返回int
答案 2 :(得分:0)
要根据您的程序,仅通过添加数组的第一个和最后一个元素(字符串方式)来获得最大数字,请尝试以下操作:
s = to_string(a[0]); #to get the first element
s1 = s1 + to_string(a[i]); #to get the ith element
s2 = to_string(a[i]) + s2;
这样你就可以使用数组的所有元素,而不是只使用第一个和最后一个元素。
答案 3 :(得分:0)
不使用 'stoi' 函数,而是使用以下代码将字符串转换为整数:
int num = 0;
for(int i = 0; i < s.length(); i++){
num = num * 10 + s[i] - '0';
}
答案 4 :(得分:0)
如果程序检测到错误本身,则使用调用 abort() 生成此信号。标准库也使用此信号来报告内部错误。 c++中的assert()函数也使用abort()来产生这个信号。
答案 5 :(得分:0)
当您无限循环或未完成弹出操作时会发生此错误,我之前遇到过相同的错误,但可以在之后设法解决