我有这个函数计算x [0],x [1],x [2],其中n是行,L是下矩阵(顶部对角线上的0),x是未知,b是解。问题是他们要求我从main调用它,不知道如何将参数传递给函数,我把它放在这里:
void resTinf (int n, double **L, double *x, double *b){
int i, k;
x[0]=b[0];
for (i = 1, i<n, i++){
x[i]=b[i];
for (k = 0, k<i, k++){
x[i] = x[i]-L[i][k]*x[k];
}
}
x[2] = b[2] - L[2][0]*x[0]-L[2][1]*x[1];
printf(x[1], x[2], x[3]);
}
主要:
int n = 3;
double **a, *v, *u;
scanf ("% le " , &v[0 ]);
scanf ("% le " , &v[1 ]);
scanf ("% le " , &v[2 ]);
scanf ("% le " , &a[1][ 0]);
scanf ("% le " , &a[2 ][ 0]);
scanf ("% le " , &a[2 ][ 1 ]);
答案 0 :(得分:1)
首先,您需要为动态数组分配内存,或者只是在函数开头创建静态数组。 像那样:
#include <stdlib.h>
主:
int n = 3;
double **a, *v, *u;
v = (double*)malloc(n * sizeof(double));
u = (double*)malloc(n * sizeof(double));
a = (double**)malloc(n * sizeof(double *));
for(int i = 0; i < n; i++){
a[i] = (double*)malloc(n * sizeof(double));
}
scanf ("% le " , &v[0 ]);
scanf ("% le " , &v[1 ]);
scanf ("% le " , &v[2 ]);
scanf ("% le " , &a[1][ 0]);
scanf ("% le " , &a[2 ][ 0]);
scanf ("% le " , &a[2 ][ 1 ]);
或
int n = 3;
double a[n][n], v[n], u[n];
scanf ("% le " , &v[0 ]);
scanf ("% le " , &v[1 ]);
scanf ("% le " , &v[2 ]);
scanf ("% le " , &a[1][ 0]);
scanf ("% le " , &a[2 ][ 0]);
scanf ("% le " , &a[2 ][ 1 ]);