我一直在做一项任务来创建一个特定的随机测试, 一切都很顺利,直到我不得不制作一个循环 tp 表示双重求和
int A[][6] = { {4529,9045,13568,18091,22615,2789},
{9045,18097,27139,36187,45234,55789},
{13568,27139,40721,54281,67825,83658},
{18091,36187,54281,72414,90470,111580},
{22615,45234,67852,90470,113262,139476},
{27892,55789,83658,111580,139476,172860} };
float B[] = { 1 / 6,5 / 24, 11/120, 19/720, 29/5040, 1/840 };
float R = 0, temp1 = 0, temp2, temp3;
for (int i = 0; i < 6; i++) {
for (int j = 0; i < 6; j++) {
temp2 = r[i] - (n * B[i]);
temp3 = r[j] - (n * B[j]);
temp1 += (A[i][j]*temp2*temp3);
}
}
R = temp1 / n;
cout << "R= " << R;
r 是我之前在程序中定义的长度为 6 的数组
尽管没有任何错误,最后两行什么也没有产生,我试图用仅仅计算任何东西来替换它们仍然没有
由于打字错误,您陷入了第二个 for 循环的无限循环
for (int j = 0; i < 6; j++) {...}
应该是
for (int j = 0; j < 6; j++) {
所以代码永远不会到达最后两行
数组
B
float B[] = { 1 / 6,5 / 24, 11/120, 19/720, 29/5040, 1/840 };
由零初始化,因为在初始化表达式中使用了整数运算。
你应该写例如
float B[] = { 1.0f / 6,5.0f / 24, 11.0f/120, 19.0f/720, 29.0f/5040, 1.0f/840 };
还有 @Oded Ben Dov 指出有错字
for (int j = 0; i < 6; j++) {
^^^^^
// Define your floats as this way
float B[] = { 1.f/6, 5.f/24, 11.f/120, 19.f/720, 29.f/5040, 1.f/840};
...
for (int i = 0; i < 6; i++)
{
//use j instead of i to prevent infinite loop
for (int j = 0; j < 6; j++) {
temp2 = r[i] - (n * B[i]);
temp3 = r[j] - (n * B[j]);
temp1 += (A[i][j]*temp2*temp3);
}
}