標題: [help]程式除錯大隊招募中(XD)
len8301061 (DJ.AshiKoki)
版主
Rank: 7Rank: 7Rank: 7
GIRAFFE


UID 17
精華 1
積分 11170
帖子 394
閱讀權限 100
註冊 2010-1-13
用戶註冊天數 5225
用戶失蹤天數 2961
來自 MTPC
狀態 離線
125.226.28.140
分享 
發表於 2010-10-20 19:42  資料 文集 私人訊息  Yahoo!
[help]程式除錯大隊招募中(XD)
爛愷
幫我找找看哪裡出了問題吧


如果其他人也要幫忙的話
我說一下這在幹嘛吧

我要模擬一個m*m的陣列
這之中只有(a,b)是1
其他都是0
當開始操作時
以亂數決定要向周圍8個其中一個擴散
且原本的1會保留
當擴散到全部都變成1時停止
目前先做到這樣
那些printf都是檢測用的(除了前兩個)

P.S. 我之所以用+2 是因為避免本來是0我擴散過去之後
掃到他時又多做了  所以用模2確認原本是不是1  
在後面有一個迴圈有將不是0的都回歸為1


現在的問題在於
以3*3為例 若初始位置在中央(2,2)
0 0 0
0 1 0  
0 0 0
如果亂數模8之後r為0則會變成
1 0 0                                 0 7 6
0 1 0    亂數r對應位置→     1 x 5
0 0 0                                 2 3 4
但我發現當r=1,2,5,6時會發生錯誤
如果r=1或6 會變成
0 0 1
1 1 0
0 0 0
如果r=2或5 會變成ˊ
0 0 0
0 1 1
1 0 0

就是找不到錯在哪........



下面的變數t,p,data[][]先別理他 我之後會用到
=========================分隔線================================
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
    int m,a,b,i,j,x,y,r,t,p=1;
    srand(time(NULL));
    printf("m=");
    scanf("%d",&m);
    m-=1;
    char k[m][m],data[(m+1)*(m+1)];
    printf("a,b=");
    scanf("%d,%d",&a,&b);
    a-=1;b-=1;
    for(i=0;i<=m;i++){
       for(j=0;j<=m;j++){k[j]=0;  }}
    k[a]=1;
   
   
    for(t=0;p<(m+1)*(m+1);t++){         
    data[t]=p;
        for(i=0;i<=m;i++){
           for(j=0;j<=m;j++){
                                       if(k[j]%2==1){
                                          r=rand()%8;
                                             if(r==0){
                                                     if(i-1>=0&&j-1>=0)k[i-1][j-1]+=2;
                                                     }
                                             if(r==1){/*x*/
                                                          if(j-1>=0)k[j-1]+=2;
                                                          printf("%d\n",k[j-1]);}
                                             if(r==2){/*x*/
                                                          if(i+1<=m&&j-1>=0)k[i+1][j-1]+=2;
                                                          printf("%d\n",k[i+1][j-1]);}
                                             if(r==3){
                                                          if(i+1<=m)k[i+1][j]+=2;
                                                          }
                                             if(r==4){
                                                          if(i+1<=m&&j+1<=m)k[i+1][j+1]+=2;
                                                          }
                                             if(r==5){/*x*/
                                                          if(j+1<=m)k[j+1]+=2;
                                                          printf("%d\n",k[j+1]);}
                                             if(r==6){/*x*/
                                                          if(i-1>=0&&j+1<=m)k[i-1][j+1]+=2;
                                                          printf("%d\n",k[i-1][j+1]);}
                                             if(r==7){
                                                          if(i-1>=0)k[i-1][j]+=2;
                                                          } printf("%d %d %d\n",r,i,j);                 
                                              } printf("\n");
                               }
                        
                            }
        for(x=0,p=0;x<=m;x++){
          for(y=0;y<=m;y++){
                              if(k[x][y]!=0){k[x][y]=1;p++;}
                              }}
   
   
    for(i=0;i<=m;i++){
      for(j=0;j<=m;j++){
                          printf("%d ",k[j]);}
                          printf("\n");}printf("\n");
   
   
    }
    data[t]=x;
   
system("PAUSE");
return 0;
}

=========================分隔線================================

[ 本帖最後由 len8301061 於 2010-10-20 21:47 編輯 ]
頂部
len8301061 (DJ.AshiKoki)
版主
Rank: 7Rank: 7Rank: 7
GIRAFFE


UID 17
精華 1
積分 11170
帖子 394
閱讀權限 100
註冊 2010-1-13
用戶註冊天數 5225
用戶失蹤天數 2961
來自 MTPC
狀態 離線
125.226.28.140
發表於 2010-10-20 21:27  資料 文集 私人訊息  Yahoo!
問題尚未解決
仍有BUG


我想知道上面錯在哪裡

[ 本帖最後由 len8301061 於 2010-10-20 21:46 編輯 ]
頂部
len8301061 (DJ.AshiKoki)
版主
Rank: 7Rank: 7Rank: 7
GIRAFFE


UID 17
精華 1
積分 11170
帖子 394
閱讀權限 100
註冊 2010-1-13
用戶註冊天數 5225
用戶失蹤天數 2961
來自 MTPC
狀態 離線
125.226.28.140
發表於 2010-10-20 21:41  資料 文集 私人訊息  Yahoo!
m=3
a,b=2,2
0 0 0
0 1 0
0 1 0

0 0 0
0 1 1
1 1 1

0 0 0
0 1 1
1 1 1

0 0 1
1 1 1
1 1 1

0 0 1
1 1 1
1 1 1

0 1 1
1 1 1
1 1 1

0 1 1
1 1 1
1 1 1

0 1 1
1 1 1
1 1 1

0 1 1
1 1 1
1 1 1

1 1 1
1 1 1
1 1 1

10
Press any key to continue . . .
頂部
len8301061 (DJ.AshiKoki)
版主
Rank: 7Rank: 7Rank: 7
GIRAFFE


UID 17
精華 1
積分 11170
帖子 394
閱讀權限 100
註冊 2010-1-13
用戶註冊天數 5225
用戶失蹤天數 2961
來自 MTPC
狀態 離線
125.226.28.140
發表於 2010-10-20 21:43  資料 文集 私人訊息  Yahoo!
m=4
a,b=2,2
0 0 0 0
0 1 0 1
1 0 0 0
0 0 0 0

0 1 0 0
0 1 0 1
1 0 0 1
1 0 0 0

1 1 0 0
0 1 1 1
1 1 1 1
1 0 0 0

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 0

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 0

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 0

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1

7
Press any key to continue . . .

[ 本帖最後由 len8301061 於 2010-10-20 21:45 編輯 ]
頂部
九洲岩燒海苔
版主
Rank: 7Rank: 7Rank: 7


UID 10
精華 1
積分 9510
帖子 669
閱讀權限 100
註冊 2010-1-12
用戶註冊天數 5225
用戶失蹤天數 3096
來自 cos
狀態 離線
219.71.95.97
發表於 2010-10-20 21:48  資料 文集 私人訊息 
m=4
a,b=2 2
0 0 0 0
0 1 0 0
0 1 0 0
0 0 0 0

0 0 0 0
1 1 0 0
0 1 0 0
0 0 0 0

1 0 0 0
1 1 0 0
0 1 0 0
0 1 0 0

1 1 0 0
1 1 0 0
0 1 0 0
1 1 0 0

1 1 0 0
1 1 0 0
1 1 0 0
1 1 0 0

1 1 1 0
1 1 0 0
1 1 0 0
1 1 0 0

1 1 1 0
1 1 1 0
1 1 0 0
1 1 0 0

1 1 1 0
1 1 1 0
1 1 1 0
1 1 0 0

1 1 1 1
1 1 1 1
1 1 1 0
1 1 1 0

1 1 1 1
1 1 1 1
1 1 1 0
1 1 1 0

1 1 1 1
1 1 1 1
1 1 1 0
1 1 1 0

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 0

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1

請按任意鍵繼續 . . .
頂部
len8301061 (DJ.AshiKoki)
版主
Rank: 7Rank: 7Rank: 7
GIRAFFE


UID 17
精華 1
積分 11170
帖子 394
閱讀權限 100
註冊 2010-1-13
用戶註冊天數 5225
用戶失蹤天數 2961
來自 MTPC
狀態 離線
125.226.28.140
發表於 2010-10-21 19:43  資料 文集 私人訊息  Yahoo!

開錯陣列
頂部