2010-12-06 60 views
0

例如,我不得不矩陣無法檢測到任何錯誤,但我的程序掛起

Allocation Matrix 

    0 0 1 0 
    2 0 0 1 
    0 1 2 0 

    Request matrix 
    2 0 0 1 
    1 0 1 0 
    2 1 0 0 

    Resources in Existence: 4 2 3 1 
    Available resources: 2 1 0 0 

我的代碼

  for (w = 0; w < TRows;) 
      { 
       if (Finish[w] == 0) 
       { 
        flag = 0; 
        for (x = 0; x < TColumns; x++) 
        { 
         if (A[x] >= Request[w, x]) 
          flag = flag + 1; 
        } 
        if (flag == TColumns) 
        { 
         T[y] = w; 
         Finish[w] = 1; 
         for (x = 0; x < TRows; x++) 
         { 
          A[x] = A[x] + Allocation[w, x]; 
         } 
         y = y + 1; 
         w = -1; 
         //break; 
        } 
        w++; 
       } 
      } 
+1

你一定要用調試器完成它。 – Artemiy 2010-12-06 17:54:35

回答

2

首先,使用更多的描述性變量名稱。你的代碼幾乎不可讀。我做了點但至少有一個問題:

for (w = 0; w < TRows;) 
{ 
    if (Finish[w] == 0) 
    { 
     /* snip */ 
     w++; 
     /* snip */ 
    } 
} 

如果Finish[w](這意味着什麼)永遠結束了比0別的東西。 w永遠不會增加,並且你已經有了一個無限循環。如果它始終是0,那麼您就不需要該測試。這裏的邏輯有些問題。

2

這行看起來不正確的。

for (w = 0; w < TRows;) 

如果Finish[0]非零,該循環如何完成?

您是否嘗試過Visual Studio中的Debug-Break-All以查看它掛起的位置?

相關問題