2015-10-21 203 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; 
} 

在執行時,它出現segfaults,雖然。

任何人都可以幫我解決問題嗎?

回答

0

由於循環中的最大值in,循環將始終寫入超出數組邊界的一個元素。要麼爲每個陣列分配n + 1內存,要麼將循環條件設置爲i < n

+0

謝謝,我得到了。 :) –