欢迎光临散文网 会员登陆 & 注册

C语言 计算行列式

2020-04-19 20:42 作者:kands-code  | 我要投稿

#include <stdio.h>

#define N 100


void translate(float arr[N][N], int len);

void display(float arr[N][N], int len);


int main(void)

{

    int len;

    int i, j;

    float arr[N][N], val = 1;


    printf("Enter the length of determinant: ");

    scanf("%d", &len);


    printf("\nEnter the elements of the determinant:\n");

    for (i = 0; i < len; i++)

    {

        for (j = 0; j < len; j++)

        {

            scanf("%f", &arr[i][j]);

        }

    }

    translate(arr, len);


    display(arr, len);


    for (i = 0; i < len; i++)

    {

        val *= arr[i][i];

    }


    printf("The value of determinant is %.2f.\n", val);


    return 0;

}


void translate(float arr[N][N], int len)

{

    int i, j, k, factor = 1;

    int index, temp;


    for (i = 0; i < len; i++)

    {

        for (j = 0; j < len; j++)

        {

            if (arr[j][i] != 0.0f)

            {

                index = j;

                goto E;

            }

        }

    }


    E:

    if (index != 0)

    {

        factor *= -1;

        for (i = 0; i < len; i++)

        {

            temp = arr[0][i];

            arr[0][i] = arr[index][i];

            arr[index][i] = temp;

        }

    }


    for (i = 0; i < len - 1; i++)

    {

        for (j = i + 1; j < len; j++)

        {

            temp = arr[j][i];

            for (k = i; k < len; k++)

            {

                arr[j][k] = arr[j][k] * arr[i][i] - arr[i][k] * temp;

            }

        }

    }


    for (i = 0; i < len; i++)

    {

        for (j = 0; j < len; j++)

        {

            arr[i][j] *= factor; 

        }

    }

}


void display(float arr[N][N], int len)

{

    int i, j;


    for (i = 0; i < len; i++)

    {

        for (j = 0; j < len; j++)

        {

            printf("%.2f\t", arr[i][j]);

        }

        putchar('\n');

    }

}


C语言 计算行列式的评论 (共 条)

分享到微博请遵守国家法律