2015-10-21 4 views
-1

This проблема, которую я пытаюсь решить.Ошибка SIGSEGV (ошибка времени выполнения)

Это моя попытка:

#include <iostream> 
using namespace std; 

int main() 
{ 
long long int n; 
cin>>n; 
long long int a[n],b[n],i,max1=0,max2=0; 
a[0]=0; 
for(i=1;i<n+1;i++){ 
cin>>a[i]; 
if(abs(a[i]-a[i-1])>max1) 
max1=abs(a[i]-a[i-1]); 

} 
b[0]=0; 
for(i=1;i<n+1;i++){ 
cin>>b[i]; 
if(abs(b[i]-b[i-1])>max2) 
max2=abs(b[i]-b[i-1]); 
} 

if(max1>max2) 
{ cout<<"Dom"<<endl; 
cout<<max1;} 
else if(max1<max2) 
{ cout<<"Brian"<<endl; 
cout<<max2; } 
else 
{ 
cout<<"Tie"<<endl; 
cout<<max1; 
} 
//cout << "Hello World!" << endl; 
return 0; 
} 

Об исполнении, он возвращает ошибку сегментации, хотя.

Может ли кто-нибудь помочь мне решить проблему?

ответ

0

Петля всегда будет писать один элемент за пределами границ массива, так как максимальное значение i равно n в цикле. Либо выделите память n + 1 для каждого массива, либо установите условие цикла для i < n.

+0

Спасибо, я понял. :) –

Смежные вопросы