乔丹消除浮动到浮动的论点
Posted
技术标签:
【中文标题】乔丹消除浮动到浮动的论点【英文标题】:Jordans elimination float to float argument 【发布时间】:2015-12-21 13:55:02 【问题描述】:所以我试图编写有关Jordan's elimination 的代码。当我遇到问题时:
无法将 'float' 转换为 'float ()[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;
【问题讨论】:
为了便于阅读,请缩进您的代码 n=read(A[N][N]);你给函数一个浮点值,它采用“float A[N][N]”(它是 float*[N] 类型)。试试“n=read(A);” @user3514538float A[N][N]
不是 float **
。
@Holt 是的,我更正了
@user3514538:缺少父级:float (*)[N]
。
【参考方案1】:
在所有这些函数调用中
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 的数组
【讨论】:
【参考方案2】:当您执行function (A[N][N])
时,您会将单个float
值传递给function
,所以在这里:
n = read(A[N][N]);
jordan(A[N][N], n);
print(A[N][N], n);
您将单个值传递给read
、jordan
和print
。顺便说一句,您正在访问不存在的单元格(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
/n
,所以您的循环应该从0
到n-1
/n
.
【讨论】:
【参考方案3】:你的主要应该是
int main()
float A[N][N];
int n = read(A);
jordan(A, n);
print(A, n);
return(0);
【讨论】:
以上是关于乔丹消除浮动到浮动的论点的主要内容,如果未能解决你的问题,请参考以下文章