Jordans消除float浮动参数

时间:2015-12-21 13:55:03

标签: c++ dev-c++

所以我试图处理有关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;
}

3 个答案:

答案 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);

您将单个值传递给readjordanprint。并且B.T.W您正在访问不存在的单元格(A[N]已超出范围,因为Afloat [N][N + 1]

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

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

除此之外,您的代码中存在一些错误:

  1. 您的功能需要float [N][N]Afloat [N][N+1],因此您必须修改内容。

  2. 您正在访问从1n / n+1的单元格,C数组包含从0n-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);
}