Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;添加二进制数-分段错误_C++_Binary - Fatal编程技术网

C++ C++;添加二进制数-分段错误

C++ C++;添加二进制数-分段错误,c++,binary,C++,Binary,我正在做一个家庭作业,我必须把两个二进制数相加。我有一些代码,这确实不是最好的解决方案,但至少在visual studio控制台中是有效的,但是,当我将source.cpp上传到一个webapp时,它会告诉我它是否正确,它会给我错误: 分段故障/总线错误/超出内存限制/超出堆栈限制 在我在结果之前添加删除“0”的这部分代码后,它开始出现: int result_int = stoi(result); if (result_int == 0) // needed for case when res

我正在做一个家庭作业,我必须把两个二进制数相加。我有一些代码,这确实不是最好的解决方案,但至少在visual studio控制台中是有效的,但是,当我将source.cpp上传到一个webapp时,它会告诉我它是否正确,它会给我错误: 分段故障/总线错误/超出内存限制/超出堆栈限制

在我在结果之前添加删除“0”的这部分代码后,它开始出现:

int result_int = stoi(result);
if (result_int == 0) // needed for case when result will be only 0, like "00000"
{
    result = '0';
}
else 
{
    int i = 0;
    while (result[i] == '0')
    {
        i++;
    }
    result.erase(0, result.find_first_not_of('0'));
}
是否有任何可能导致此错误的错误

这是全部代码(不幸的是名称是捷克语)

#包括
#包括
使用名称空间std;
布尔IsOneOrZero(字符串n1、字符串n2)
{
布尔为零;
对于(int i=0;in1.size())
{
而(n1.size()!=n2.size())
{
n1='0'+n1;
}
}
如果(n1.size()>n2.size())
{
而(n1.size()!=n2.size())
{
n2='0'+n2;
}
}
}
字符串SEL(字符串n1、字符串n2)
{
字符串vysledek;
int值=0;
对于(int i=n1.size();i>=0;i--)
{
如果(n1[i]=“0”&&n2[i]=“0”&&value==0)
{
vysledek='0'+vysledek;
数值=0;
//苏塞特prvku je 0
}
else如果(n1[i]=='0'和n2[i]=='0'和&value==1)
{
vysledek='1'+vysledek;
数值=0;
//苏塞特prvku je 1
}
else如果(n1[i]=='1'和n2[i]=='0'和&value==0)
{
vysledek='1'+vysledek;
//苏塞特prvku je 1
}
如果(n1[i]='0'&&n2[i]='1'&&value==0)
{
vysledek='1'+vysledek;
//苏塞特prvku je 1
}
else如果(n1[i]=='1'和n2[i]=='0'和&value==1)
{
vysledek='0'+vysledek;
数值=1;
//苏塞特prvku je 0
//值=1
}
else如果(n1[i]='0'和n2[i]='1'和&value==1)
{
vysledek='0'+vysledek;
数值=1;
//苏塞特prvku je 0
//值=1
}
如果(n1[i]='1'&&n2[i]='1'&&value==0),则为else
{
vysledek='0'+vysledek;
数值=1;
//苏塞特prvku je 0
//值=1
}
else如果(n1[i]=='1'和n2[i]=='1'和&value==1)
{
vysledek='1'+vysledek;
数值=1;
//苏塞特prvku je 1
//值=1
}
}
如果(值==1)
{
vysledek='1'+vysledek;
}
int vysledek_int=stoi(vysledek);
如果(vysledek_int==0)
{
vysledek=“0”;
}
其他的
{
int i=0;
而(vysledek[i]=“0”)
{
i++;
}
擦除(0,vysledek.find_first_not_of('0'));
}
返回vysledek;
}
int main()
{
字符串n1;
n2串;
cout-n1;
cin>>n2;
ZmenaVelikosti(n1,n2);
如果(IsOneOrZero(n1,n2)=真)
{

cout您在
SecteniCisel
中的循环有缺陷:

for (int i = n1.size(); i >= 0; i--)
{
    if (n1[i] == '0' && n2[i] == '0' && value == 0)
i
n1.size()
时,您正在查看
n1[i]
。您需要从
n1.size()-1
。在
n1.size()
处访问它无效

除此之外,所有这些
if…else if…else if
糟透了。用一张桌子或一个
开关或别的什么东西


可能还有更多的错误,请不要看得太仔细。

您不能使用stoi()方法将字符串转换为整数,因为整数变量的最大值可以是2147483647。如果在字符串变量中输入较大的数字,变量将溢出。

始终发布可编译代码。在一个位置(
结果='0';
),
result
似乎是一个
char
。在另一个(
result.erase(…
)中,您将其视为一个容器(例如
string
)。不幸的是,您没有包含声明。我在此处将“result”声明为stringPost代码。我发布了代码。
for (int i = n1.size(); i >= 0; i--)
{
    if (n1[i] == '0' && n2[i] == '0' && value == 0)