帮助我摆脱这些错误,找到"C"中矩阵的逆 [英] help me to get rid of these errors to find inverse of a matrix in 'C'

查看:82
本文介绍了帮助我摆脱这些错误,找到"C"中矩阵的逆的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

#include<stdio.h>
#include<math.h>
float detrm(float[][],float);
void cofact(float[][],float);
void trans(float[][],float[][],float);
main()
{
	float a[25][25],k,d;
	int i,j;
	printf("ENTER THE ORDER OF THE MATRIX:\n");
	scanf("%f",&k);
	printf("ENTER THE ELEMENTS OF THE MATRIX:\n");
	for(i=0;i<k;i++)
	{
		for(j=0;j<k;j++)
		{
			scanf("%f",&a[i][j]);
		}
	}
	d=detrm(a,k);
	printf("THE DETERMINANT IS=%f",d);
	if(d==0)
	printf("\nMATRIX IS NOT INVERSIBLE\n");
	else
	cofact(a,k);
}
/******************FUNCTION TO FIND THE DETERMINANT OF THE MATRIX************************/
 
float detrm(float a[25][25],float k)
{
	float s=1,det=0,b[25][25];
	int i,j,m,n,c;
	if(k==1)
	{
		return(a[0][0]);
	} 
	else
	{
		det=0;
		for(c=0;c<k;c++)
		{
			m=0;
			n=0;	
			for(i=0;i<k;i++)
			{
				for(j=0;j<k;j++)
				{
					b[i][j]=0;
					if(i!=0&&j!=c)
					{
						b[m][n]=a[i][j];
						if(n<(k-2))
							n++;
						else
						{	
							n=0;
							m++;
						}
					}
				}
			}
			det=det+s*(a[0][c]*detrm(b,k-1));
			s=-1*s;
		}
	}
	return(det);
}
 
/*******************FUNCTION TO FIND COFACTOR*********************************/ 
 
void cofact(float num[25][25],float f){ 
float b[25][25],fac[25][25]; 
int p,q,m,n,i,j; 
for(q=0;q<f;q++){
for(p=0;p<f;p++){
m=0;
n=0;
for(i=0;i<f;i++){
for(j=0;j<f;j++){
b[i][j]=0;
if(i!=q&&j!=p)
{
b[m][n]=num[i][j];
if(n<(f-2))
n++;
else{
n=0;
m++;
}
}
}
}
fac[q][p]=pow(-1,q+p)*detrm(b,f-1);
}
}
trans(num,fac,f);
}
 
/*************FUNCTION TO FIND TRANSPOSE AND INVERSE OF A MATRIX**************************/ 
 
void trans(float num[25][25],float fac[25][25],float r){ 
int i,j;
float b[25][25],inv[25][25],d;
for(i=0;i<r;i++){
for(j=0;j<r;j++){
b[i][j]=fac[j][i];
}
}
d=detrm(num,r);
inv[i][j]=0;
for(i=0;i<r;i++){
for(j=0;j<r;j++){
inv[i][j]=b[i][j]/d;
}
}
printf("\nTHE INVERSE OF THE MATRIX:\n");
for(i=0;i<r;i++){
for(j=0;j<r;j++){
printf("\t%f",inv[i][j]);
} 
printf("\n");
} 
}


当我在计算机上运行该程序时,我会遇到这些错误.请帮我调试一下. (我使用的是Linux操作系统).
错误为:


When I run this program on my computer Iam getting these errors. Please help me in debugging this. (Iam using linux operating system).
The errors are:

c:3: error: array type has incomplete element type
c:4: error: array type has incomplete element type
c:5: error: array type has incomplete element type
c:5: error: array type has incomplete element type
c: In function ‘main’:
c:20: error: type of formal parameter 1 is incomplete
c:25: error: type of formal parameter 1 is incomplete
c: In function ‘cofact’:
c:105: error: type of formal parameter 1 is incomplete
c:105: error: type of formal parameter 2 is incomplete




提前Thnx.




Thnx in advance.

推荐答案

只需从每个函数的顶部获取函数定义,然后将其复制到文件的顶部即可.就目前而言-您(a)使用与声明(b)不同的定义,您正在声明未知数目的数组的数组-不可以.如果编译器不知道每一行的长度,则无法计算该行在内存中的位置.

替换:
Just take the function definitions from the top of each function and copy them to the top of your file. As it stands - you''re (a) using definitions that are different to the declarations (b) you''re declaring arrays of an unknown number of arrays - a no-no. The compiler can''t calculate the position in memory of the start of each row if it doesn''t know how long each row is.

Replace:
float detrm(float[][],float);
void cofact(float[][],float);
void trans(float[][],float[][],float);



带有:



With:

float detrm(float[25][25],float);
void cofact(float[25][25],float);
void trans(float[25][25],float[25][25],float);


这篇关于帮助我摆脱这些错误,找到"C"中矩阵的逆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆