c - 我怎样才能从这个函数取回我的主函数的迭代值?
问题描述
我正在尝试将iterations
背面返回main
from 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;
}
编辑:我已经添加了上面的主要功能,但我没有包括程序的所有其他功能,因为它们对于这个问题并不重要。
解决方案
您需要将函数的返回值存储在变量中以使其更改:
iterations = JacobiMethod(T, c, x, iterations);
并且在您的函数中,正如评论中所解释的那样,您可以return iterations
并且函数的返回类型应该是int
.
请注意,iterations
主函数和函数JacobiMethod
中的变量是 2 个不同的变量。它们都是局部变量,只能在各自的函数中使用。它们只是具有相同的名称,但它们不是同一个变量。
当 中的变量iterations
发生变化时JacobiMethod
, 中的变量main
不会发生变化。
这就是为什么您需要从函数中返回值并在 main 中分配函数的返回值。
推荐阅读
- java - 属性文件应该存储在 XPages 应用程序中的什么位置?
- javascript - 为什么我不能在 Node 中运行这个 MongoDB 查询,但它可以在社区指南针中运行?
- qt - qml controle 中的语言环境属性是什么?如何使用它?
- tsql - 更新语句不起作用,因为子查询返回超过 1 个值
- css - 语义 UI:可推送中的 ui 错误不起作用
- html - 本地主机上显示字体图标,但在线上传时未显示
- ios - 如何实现折叠标题?
- php - 使用 PHPMailer 发送可以使用一个地址,但不能使用另一个地址
- angular - Safari:“阻止 https://... 请求凭据,因为它是跨域请求。” 更新到 Angular 8 后
- c# - 在 Visual Studio 2017 中显示“抑制警告”上下文菜单项以显示选项似乎缺失的警告