想請較各位大大,如下的問題點是發生在程式哪裡,謝謝?(我懷疑是在cin,但用DEV跑是正確的)
執行時發生錯誤 (SIGBUS)(7)!!
* 可能原因為嘗試定址不相符的記憶體位址,比如記憶體每頁為 4KB,但定址卻不是 4 的倍數。
sh: line 1: 15894 匯流排錯誤 (Bus error)
程式碼如下:
#include <iostream>
using namespace std;
int main()
{
int a[9][9];
while(cin)
{
for(int i=1; i<=9; i++)
for(int j=1; j<=9; j++)
cin>>a[i][j];
for(int i=1; i<=9; i++)
{
int sx=0;
int sy=0;
for(int j=1; j<=9; j++)
{
sx+=a[i][j];
sy+=a[j][i];
}
if(sx!=45 || sy!=45)
{
cout<<"NO"<<endl;
return 1;
}
}
int sz[9]={0};
for(int i=1; i<=9; i++)
{
for(int j=1; j<=9; j++)
{
if(i>=1 && i<=3){
if(j>=1 && j<=3) sz[0]+=a[i][j];
if(j>=4 && j<=6) sz[1]+=a[i][j];
if(j>=7 && j<=9) sz[2]+=a[i][j];}
if(i>=4 && i<=6){
if(j>=1 && j<=3) sz[3]+=a[i][j];
if(j>=4 && j<=6) sz[4]+=a[i][j];
if(j>=7 && j<=9) sz[5]+=a[i][j];}
if(i>=7 && i<=9){
if(j>=1 && j<=3) sz[6]+=a[i][j];
if(j>=4 && j<=6) sz[7]+=a[i][j];
if(j>=7 && j<=9) sz[8]+=a[i][j];}
}
}
for(int k=0; k<9; k++)
{
if(sz[k]!=45){
cout<<"NO"<<endl;
break;}
else{
cout<<"YES"<<endl;
break;}
}
}
return 0;
}