【发布时间】:2014-12-16 01:30:31
【问题描述】:
这是有问题的程序。为什么会导致死循环?
#include <vector>
#include <iostream>
using namespace std;
class Workshop
{
public:
int pictureFrames( vector<int> pieces );
};
int Workshop::pictureFrames( vector<int> pieces )
{
int count = 0;
for ( int i = 0 ; i < pieces.size() - 2 ; i++ )
{
for ( int j = i + 1; j < (pieces.size() - 1) ; j++ )
{
for ( int k = j + 1; k < (pieces.size()); k++ )
{
bool possible = (pieces[i] + pieces[j] > pieces[k]) &&
(pieces[j] + pieces[k] > pieces[i]) &&
(pieces[k] + pieces[i] > pieces[j]);
if ( possible )
count++;
}
}
}
return count;
}
void main()
{
Workshop w;
vector<int> pieces;
pieces.push_back( 100 );
w.pictureFrames( pieces );
}
【问题讨论】:
-
以后,通过突出显示并按
CTRL+K或缩进四个空格来格式化您的代码。不要用反引号包围每一行。其次,void mainisn't a valid signature in C++。第三,由于您使用的是 Visual Studio,因此请利用内置的调试工具(即通过设置断点)来查看程序的故障所在。 -
你试过调试吗?
-
您自己尝试过什么解决方法?我建议将调试打印输出放在合适的位置