C++ 我在c+中生成了一个运行时3异常+;代码
例外情况是“运行时检查失败#3-变量'VfMin'未经初始化就被使用”。对此我能做些什么?如果有人愿意向我解释,我不知道如何处理异常C++ 我在c+中生成了一个运行时3异常+;代码,c++,exception,C++,Exception,例外情况是“运行时检查失败#3-变量'VfMin'未经初始化就被使用”。对此我能做些什么?如果有人愿意向我解释,我不知道如何处理异常 #include <fstream> #define NMAX 50 #define INF 10000 using namespace std; int n, x0; double C[NMAX][NMAX]; int pre[NMAX], M[NMAX]; double d[NMAX]; void Init(); void Print();
#include <fstream>
#define NMAX 50
#define INF 10000
using namespace std;
int n, x0;
double C[NMAX][NMAX];
int pre[NMAX], M[NMAX];
double d[NMAX];
void Init();
void Print();
int main()
{
//This is the algorithm itself
int i, VfMin, j;
double dMin;
//Initializing the values
Init();
for (j = 1; j < n; j++)
{
dMin = INF;
for (i = 1; i <= n; i++)
{
if (!M[i] && dMin > d[i])
{
dMin = d[i];
VfMin = i;
}
}
M[VfMin] = 1; //Generated exception
for (i = 1; i <= n; i++)
{
if (!M[i] && d[i] > dMin + C[VfMin][i])
{
pre[i] = VfMin;
d[i] = dMin + C[VfMin][i];
}
}
}
//Printing the results
Print();
return 0;
}
#包括
#定义NMAX 50
#定义INF 10000
使用名称空间std;
int n,x0;
双C[NMAX][NMAX];
int pre[NMAX],M[NMAX];
双d[NMAX];
void Init();
作废打印();
int main()
{
//这就是算法本身
inti,VfMin,j;
双dMin;
//初始化值
Init();
对于(j=1;j
在if
块内,将值设置为VfMin
变量。如果If
条件从不为true
,则您的VfMin
保持未初始化状态。您可以将VfMin
设置为默认值。这可以是一个例子(假设算法的其余部分编写得很好,那么这段代码应该可以工作):
intmain()
{
//这就是算法本身
inti,VfMin,j;
双dMin;
//初始化值
Init();
对于(j=1;j
还要注意的是,在C++
中n
元素的第一个元素和数组位于索引0
处,最后一个元素位于索引n-1
请提供一个,在使用它之前,您可能没有给VfMin
赋值
int main()
{
//This is the algorithm itself
int i, VfMin, j;
double dMin;
//Initializing the values
Init();
for (j = 1; j < n; j++)
{
dMin = INF;
VfMin = -1; // default value
for (i = 1; i <= n; i++)
{
if (!M[i] && dMin > d[i])
{
dMin = d[i];
VfMin = i;
}
}
if (VfMin != -1)
{
M[VfMin] = 1;
for (i = 1; i <= n; i++)
{
if (!M[i] && d[i] > dMin + C[VfMin][i])
{
pre[i] = VfMin;
d[i] = dMin + C[VfMin][i];
}
}
}
}
//Printing the results
Print();
return 0;
}