تابع ماتریس واروون
#include
#include
#include
#include
main()
{
clrscr();
int i,j,u,k,n,T=0;
int y[10],y1[10],z=0,zl=0,l=0,w=0,A[10],con=0,NT=1,n1;
float c[10][10],b[10][10],a[10][10],B[10][10];
float s[10][10],t[10][10],a1[10][10];
printf("\t bode matrix ra vared konid:");
scanf("%d",&n);
printf("\n\t A[I][J] : ");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) {
gotoxy(3+5*(j-1),i+3);
scanf("%f",&a[i-1][j-1]);
a1[i-1][j-1]= a[i-1][j-1] ;
if(i==j) b[i-1][j-1]=1;
else b[i-1][j-1]=0;
y1[i-1]=0; A[i-1]=i-1;
y[i-1]=0;
}
n-=1;
for(i=0;i<=n;i++)
if(a[i][i]==0) con++;
if(con>=n-1){
while(NT){
for(i=0;i<=n;i++){
if(a[i][i]==0) {
for(j=0;j<=n;j++)
if(i<=n-1) {
T=a[j][i];
a[j][i]=a[j][i+1];
a[j][i+1]= T;
T=A[i];
A[i]=A[i+1];
A[i+1]=T;
}
else if(i==n){
T=a[j][i];
a[j][i]=a[j][0];
a[j][0]= T;
T=A[i];
A[i]=A[0];
A[0]=T;
}
}}
con=0;
for(i=0;i<=n;i++)
if(a[i][i]==0) con++;
if(con>=1) continue;
else NT=0;
}
goto loop1;
}
else
while(z==0){ // start while
loop1:
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
s[i][j]=0;
for(i=0;i<=n;i++)
for(j=0;j<=n;j++){
s[i][l]+=b[i][j]*a[j][l];
if(i==j) t[i][j]=1;
else t[i][j]=0;
c[i][j]=0;
}
if((s[l][l]==0)&&(l
y1[l]++;
if(y1[l]==n+2){
printf("****(DETERMINAN=0)****");
getch();
exit(0);
}
if(zl==0) {
l++;
continue;
}
else goto loop2;
}
else if((s[l][l]==0)&&(l==n)){
for(i=0;i<=n;i++)
for(j=0;j<=n;j++){
if(i==j) b[i][j]=1;
else b[i][j]=0; }
for(i=0;i<=n;i++)
{
y[i]=0;
y1[i]++;
if(y1[l]==n+2){
printf("****NO****");
getch();
exit(0);
}
}
if(T==0){ T=1; continue; }
else {
if(w<=n-2) w++;
else w=0;
goto loop2;
}
}
for(i=0;i<=n;i++){
if(i==l) t[i][l]=1/s[i][l];
else if(s[i][l]==0) t[i][l]=s[i][l];
else t[i][l]=(s[i][l]/s[l][l])* -1;
}
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
for(k=0;k<=n;k++)
c[j][i]+=t[j][k]*b[k][i];
for(i=0;i<=n;i++){
for (j=0;j<=n;j++)
b[i][j]=c[i][j];
s[i][j]=0;
}
printf("\n\n");
loop2:
if((l<=n)&&(zl!=1)) l++;
if((l>n)||(zl==1)){
zl=1;
for(i=w;i<=n;i++)
if(y[i]==1){
y[i]=0;
l=i;
goto loop1;
}
z=1;
}
}//****Eof while
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
if(A[i]==i) B[i][j]=b[i][j];
else {
n1=A[i];
B[n1][j]=b[i][j];
}
for(i=0;i<=n;i++)
for(j=0;j<=n;j++){
b[i][j]=B[i][j];
c[i][j]=0;
}
printf("\n");
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
for(k=0;k<=n;k++)
c[i][j]+=a1[j][k]*b[k][i];
printf("*** hasel zarbe matrix varoon dar khode matrix ** \n\n");
for(i=0;i<=n;i++) {
for(j=0;j<=n;j++)
printf("%5.2f",c[i][j]);
printf("\n");
}
printf(" \n*** varoon e matrix *** \n\n");
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
printf("%5.2f", b[i][j] );
printf("\n");
}
getch();
}