Я хочу найти сумму двух двоичных чисел. Мой подход заключается в том, чтобы хранить отдельные биты в массиве, а затем печатать выходные данные, которые также хранятся в массиве размером больше, чем два предыдущих массива. Также размер обоих двоичных чисел одинаковый. Поэтому я написал следующий код, и с тех пор, как я начал работу с C++, я пишу его с помощью классов. Я просто хочу знать, почему я получаю «ошибка сегментации (ядро сбрасывали)»Ошибка сегментации в программе на C++
#include<iostream>
#include<vector>
using namespace std;
class arrays{
private:
int n;
public:
void input(){
cout<<"Enter the size of arrays ";
cin>>n;
}
void array_creation(vector<int>Z){
long int b;
int a;
cout<<"Enter the binary number ";
cin>>b;
while(b!=0){
a=b%10;
Z.push_back(a);
b=b/10;
}
Z[-1]=0;
}
void output(vector<int>Z){
cout<<"The sum of two binary numbers is ";
for(int a=0;a<n+1;a++)
cin>>Z[a];
}
void logic_set(vector<int>Z,vector<int>Y,vector<int>X){
for(int a=n-1;a>=0;a--){
if(Z[a]==0 && Y[a]==0)
X[a+1]=0;
if(Z[a]==0 && Y[a]==1)
X[a+1]=1;
if(Z[a]==1 && Y[a]==0)
X[a+1]=1;
if(Z[a]==1 && Y[a]==1){
X[a+1]=0;
label:
if(Z[a-1]==0)
Z[a-1]=1;
if(Z[a-1]==1)
Z[a-1]==2;
}
if(Z[a]==2){
X[a+1]==Y[a];
goto label;
}
}
}
};
int main(){
arrays a,b;
vector<int>A;
vector<int>B;
vector<int>C;
a.input();
a.array_creation(A);
b.array_creation(B);
a.logic_set(A,B,C);
a.output(C);
}
Это точная ошибка только в том случае The exact error page
Во-первых, запустить его в отладчике и точно выяснить, где он выходит из строя, и, возможно, даже выяснить, почему. У вас также есть неопределенное поведение в коде, и я не могу представить, почему у вас это получилось. Индексирование с '-1', почему? –
'Z [-1] = 0;' выглядит очевидной проблемой. – melpomene
Почему вы используете инструкцию 'goto'? – JonatanE