배열을 사용하여 두 개의 큰 양의 정수를 뺍니다. 하지만 아래의 코드를 실행할 때 g ++ (Ubuntu)에서 실행될 때 분할 오류 (코어 덤프)가 발생합니다.배열을 사용하여 큰 숫자를 뺍니다. C++
나는 Subtract numbers using arrays - C++과 Subtracting two long positive integers in an array c++을 따라 갔지만 이것들로부터 많은 도움을 얻을 수 없었다. 당신이 그 요소를 역 참조에 operator[]
를 사용하기 전에
int main() {
vector <int> N;
vector <int> a;
vector <int> y;
char digit1;
int l;
do {
cin.get(digit1);
if (digit1 != (int)
'\n')
N.push_back(int(digit1) - int('0'));
} while (digit1 != (int)
'\n');
char digit2;
do {
cin.get(digit2);
if (digit2 != (int)
'\n')
a.push_back(int(digit2) - int('0'));
} while (digit2 != (int)
'\n');
int i = N.size() - 1;
int j = a.size() - 1;
int k = 0;
do {
if (j >= 0) {
if (N[i] < a[j]) {
y[k] = N[i] + 10 - a[j];
l = i - 1;
while (N[l] == 0) {
N[l] = 9;
l--;
}
N[l] = N[l] - 1;
} else {
y[k] = N[i] - a[j];
}
i--;
j--;
k++;
} else {
y[k] = N[i];
i++;
k++;
}
} while (i >= 0);
for (int m = y.size() - 1; m >= 0; m--) {
cout << y[m];
}
return 0;
오류가 발생한 행은 무엇입니까? 어딘가에서 메모리를 덮어 쓸 가능성이 가장 높습니다. – OldProgrammer
숫자를 입력하고 Enter 키를 누르면이 오류가 발생합니다. – user1504383
디버거로 코드를 단계별로 실행 했습니까? 무슨 라인이 오류를 일으키는 지 아십니까? – OldProgrammer