数据类型
#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)处出现问题。
还有一个问题老是说程序是垃圾文件,怎么解决
上面的n可以输入2,再输入二阶矩阵(如1.25 -0.75 -0.75 1.25)
现在的问题是输入整数可以,输入小数就数据丢失了 就是说我想把数据全部改为double型 问题已解决{:5_109:}
页:
[1]