首页 > 解决方案 > 我怎样才能从这个函数取回我的主函数的迭代值?

问题描述

我正在尝试将iterations背面返回mainfrom JacobiMethod,但0即使我写它仍然显示return iterations;

int JacobiMethod(double T[N][N], double c[N], double x[N], int iterations)
{
    double x_new[N];
    double x_prev[N];
    double tmp=0;
    while(magnitudeVectorDiff(x_new, x_prev) != 1)
    {   
        for(int i=0; i<N; i++)
        {
            for(int j=0; j<N; j++)
            {
                tmp=tmp+T[i][j]*x[j];
            }
            x_new[i]=tmp+c[i];
            tmp=0;
        }
        for(int i=0; i<N; i++)
        {
            x_prev[i]=x[i];
            x[i]=x_new[i];
        }
        iterations++;
    }
    return iterations;
}

int main()
{
    double A[N][N];
    double v[N];
    double x[N] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    double LU[N][N];
    double Dinv[N][N];
    double T[N][N];
    double c[N];
    double x_new[N];
    double x_prev[N];
    int iterations=0;
    read_data_from_file(A, v);
    splitting_array(A, LU, Dinv);
    T_and_c(LU, Dinv, v, T, c);
    JacobiMethod(T, c, x, iterations);
    iterations=JacobiMethod(T, c, x, iterations);
    printArray(A);
    printVectorV(v);
    printf("Completed %d iterations (for tolerance = %lf).\n", iterations, TOL);
    printf("%d\n", iterations);
    printVector(x);
    return 0;
}

编辑:我已经添加了上面的主要功能,但我没有包括程序的所有其他功能,因为它们对于这个问题并不重要。

标签: c

解决方案


您需要将函数的返回值存储在变量中以使其更改:

iterations = JacobiMethod(T, c, x, iterations);

并且在您的函数中,正如评论中所解释的那样,您可以return iterations并且函数的返回类型应该是int.

请注意,iterations主函数和函数JacobiMethod中的变量是 2 个不同的变量。它们都是局部变量,只能在各自的函数中使用。它们只是具有相同的名称,但它们不是同一个变量。

当 中的变量iterations发生变化时JacobiMethod, 中的变量main不会发生变化。

这就是为什么您需要从函数中返回值并在 main 中分配函数的返回值。


推荐阅读