for循环没有给出任何输出[关闭]

问题描述 投票:0回答:3

我一直在做一项任务来创建一个特定的随机测试, 一切都很顺利,直到我不得不制作一个循环 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 的数组

尽管没有任何错误,最后两行什么也没有产生,我试图用仅仅计算任何东西来替换它们仍然没有

c++ for-loop floating-point nested-loops
3个回答
2
投票

由于打字错误,您陷入了第二个 for 循环的无限循环

for (int j = 0; i < 6; j++) {...}

应该是

for (int j = 0; j < 6; j++) {

所以代码永远不会到达最后两行


2
投票

数组

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++) {
                ^^^^^

2
投票
// 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);     
    }     
}
© www.soinside.com 2019 - 2024. All rights reserved.