吴敌小白 发表于 2020-5-1 13:23:35

数据类型

#include<stdio.h>
#define N 2


int main()
{
        void getAStart(double arcs, int n, double ans);
        int getA(double arcs, int n);

        double arcs;
        double astar;
        int i, j;
        int n;

        scanf_s("%d", &n);
        for (i = 0; i < n; i++)
        {
                for (j = 0; j < n; j++)
                {
                        scanf_s("%lf", &arcs);
                }
        }

        int a = getA(arcs, n);
        if (a == 0)
        {
                printf("can not transform!\n");
        }
        else
        {
                getAStart(arcs, n, astar);
                for (i = 0; i < n; i++)
                {
                        for (j = 0; j < n; j++)
                        {
                                printf("%.3lf ", (double)astar / a);
                        }
                        printf("\n");
                }
        }
        printf("\n");




        return 0;
}


//

void getAStart(double arcs, int n, double ans)//计算每一行每一列的每个元素所对应的余子式,组成A*
{
        int getA(double arcs, int n);
        if (n == 1)
        {
                ans = 1;
                return;
        }
        int i, j, k, t;
        double temp;
        for (i = 0; i < n; i++)
        {
                for (j = 0; j < n; j++)
                {
                        for (k = 0; k < n - 1; k++)
                        {
                                for (t = 0; t < n - 1; t++)
                                {
                                        temp = arcs;
                                }
                        }


                        ans = getA(temp, n - 1);
                        if ((i + j) % 2 == 1)
                        {
                                ans = -ans;
                        }
                }
        }
}

//

int getA(double arcs, int n)//按第一行展开计算|A|
{
        if (n == 1)
        {
                return (double)arcs;
        }
        double ans = 0;
        double temp;
        int i, j, k;
        for (i = 0; i < n; i++)
        {
                for (j = 0; j < n - 1; j++)
                {
                        for (k = 0; k < n - 1; k++)
                        {
                                temp = arcs[(k >= i) ? k + 1 : k];

                        }
                }
                double t = getA(temp, n - 1);
                if (i % 2 == 0)
                {
                        ans = ans + arcs * t;                     (1)
                }
                else
                {
                        ans = ans - arcs * t;                     (2)
                }
        }
        return (double)ans;
}

矩阵求逆,但是数据类型总是出现说数据丢失,我已将int型改为double型,但还是出现数据丢失,不知怎么回事,(1),(2)处出现问题。
还有一个问题老是说程序是垃圾文件,怎么解决








吴敌小白 发表于 2020-5-1 14:14:16

上面的n可以输入2,再输入二阶矩阵(如1.25   -0.75   -0.75    1.25)
现在的问题是输入整数可以,输入小数就数据丢失了

吴敌小白 发表于 2020-5-1 14:20:11

就是说我想把数据全部改为double型

吴敌小白 发表于 2020-5-1 14:41:11

问题已解决{:5_109:}
页: [1]
查看完整版本: 数据类型