所以我试图处理有关Jordan's elimination的代码。当我遇到问题时:
无法转换'浮动'到'浮动()[100]'争论' 1'到' int diabase(float()[100])
这是什么意思?我该如何解决?
#include<stdio.h>
#define N 100
int read(float A[N][N]);
int jordan(float A[N][N],int n);
int print(float A[N][N],int n);
int main()
{
int i, j, k, n, y;
float A[N][N+1], c, x[N];
n = read(A[N][N]);
jordan(A[N][N]], n);
print(A[N][N], n);
return(0);
}
int read(float A[N][N]){
int n,i,j;
printf("Enter the size of matrix: ");
scanf("%d",&n);
printf("Enter the elements of augmented matrix row-wise:");
for(i=1; i<=n; i++)
{
for(j=1; j<=(n+1); j++)
{
printf(" A[%d][%d]:", i,j);
scanf("%f",&A[i][j]);
}
}
return n;
}
int print( float A[N][N],int n){
int i;
float x[n];
printf("The solution is:");
for(i=1; i<=n; i++)
{
x[i]=A[i][n+1]/A[i][i];
printf("n x%d=%fn",i,x[i]);
}
return 0;
}
int jordan(float A[N][N],int n){
int i,j,k;
float c;
for(j=1; j<=n; j++)
{
for(i=1; i<=n; i++)
{
if(i!=j)
{
c=A[i][j]/A[j][j];
for(k=1; k<=n+1; k++)
{
A[i][k]=A[i][k]-c*A[j][k];
}
}
}
}
return 0;
}
答案 0 :(得分:0)
在所有这些函数调用中
n=read(A[N][N]);
jordan(A[N][N]],n);
print(A[N][N],n);
您正在传递数组的元素而不是数组。如果要传递数组,只需使用不带任何索引的数组名称
n=read(A);
jordan(A,n);
print(A,n);
你会遇到另一个问题但是因为你的函数需要一个100 x 100的二维数组,但你在main()
创建的数组是100 x 101,这是不匹配的。你需要在main()
100 x 100中制作数组,或者更改你的函数取100 x 101的数组
答案 1 :(得分:0)
当您执行function (A[N][N])
时,您将一个float
值传递给function
,所以这里:
n = read(A[N][N]);
jordan(A[N][N], n);
print(A[N][N], n);
您将单个值传递给read
,jordan
和print
。并且B.T.W您正在访问不存在的单元格(A[N]
已超出范围,因为A
为float [N][N + 1]
。
如果您想将A
传递给您的函数,只需执行以下操作:
n = read(A);
jordan(A, n);
print(A, n);
除此之外,您的代码中存在一些错误:
您的功能需要float [N][N]
但A
为float [N][N+1]
,因此您必须修改内容。
您正在访问从1
到n
/ n+1
的单元格,C数组包含从0
到n-1
/ {{1}的单元格},所以你的循环应该从n
转到0
/ n-1
。
答案 2 :(得分:0)
你的主要应该是
int main()
{
float A[N][N];
int n = read(A);
jordan(A, n);
print(A, n);
return(0);
}