乔丹消除浮动到浮动的论点

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);” @user3514538 float 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);

您将单个值传递给readjordanprint。顺便说一句,您正在访问不存在的单元格(A[N] 超出范围,因为Afloat [N][N + 1]

如果您想将A 传递给您的函数,只需执行以下操作:

n = read(A);
jordan(A, n);
print(A, n);

除此之外,您的代码中还有一些错误:

    您的函数需要 float [N][N],但 Afloat [N][N+1],因此您必须进行一些修改。

    您正在访问从1n/n+1 的单元格,C 数组的单元格从0n-1/n,所以您的循环应该从0n-1/n.

【讨论】:

【参考方案3】:

你的主要应该是

int main()

    float A[N][N];
    int n = read(A);
    jordan(A, n);
    print(A, n);
    return(0);

【讨论】:

以上是关于乔丹消除浮动到浮动的论点的主要内容,如果未能解决你的问题,请参考以下文章

消除float浮动的影响

消除浮动方法

消除浮动的方式

(3.19)消除浮动的区别.

[前端]如何写一个水平导航栏?(浮动inline-block+消除间距)

清除浮动的方式