Я изучаю C++ и пытаюсь решить проблемы в программировании. Я застрял в решении веселой перемычки. Чтобы добраться до точки, моя программа запускается, но после ввода первой строки и получения вывода возникает ошибка сегментации. Вот мой код:Ошибка ошибки сегментации C++
#include <iostream>
#include <cmath>
using namespace std;
bool is_jolly(int *list, int cap, bool* container){
int difference = 0;
for(int i=0; i<cap-1; i++){
difference = list[i] - list[i+1];
if(abs(difference) < cap && abs(difference) >= 1 && container[difference] == false){
container[difference] = true;
continue;
}
else return false;
}
return true;
}
int main(){
int n;
bool used[30001];
while(cin >> n){
int * num_list = new int[n];
for(int i=0; i<n; i++){
cin >> num_list[i];
used[i+1] = false;
}
if(is_jolly(num_list,n,used))
cout << "Jolly" << endl;
else cout << "Not Jolly" << endl;
delete[] num_list;
}
return 0;
}
Вы пытались войти в свой код с помощью отладчика? – taocp
Начните использовать 'std :: vector' вместо необработанных массивов, и вы увидите, что все ваши ошибки сбоя seg исчезнут! – CoryKramer
Вы должны прочитать [это сообщение в блоге] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) Эрика Липперта о том, как отлаживать небольшие программы, такие как ваши, и применять описанные там методы. –