无法检测到任何错误,但我的程序挂起
问题描述:
例如,我不得不矩阵无法检测到任何错误,但我的程序挂起
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++;
}
}
答
首先,使用更多的描述性变量名称。你的代码几乎不可读。我做了点但至少有一个问题:
for (w = 0; w < TRows;)
{
if (Finish[w] == 0)
{
/* snip */
w++;
/* snip */
}
}
如果Finish[w]
(这意味着什么)永远结束了比0
别的东西。 w
永远不会增加,并且你已经有了一个无限循环。如果它始终是0
,那么您就不需要该测试。这里的逻辑有些问题。
答
这行看起来不正确的。
for (w = 0; w < TRows;)
如果Finish[0]
非零,该循环如何完成?
您是否尝试过Visual Studio中的Debug-Break-All以查看它挂起的位置?
你一定要用调试器完成它。 – Artemiy 2010-12-06 17:54:35