#include<stdio.h>
void make1( float a[][20],int, int,int );
void make0( float a[][20],int, int,int );
void show(float a[][20],int r,int c);
int rankA(float a[][20],int r);
int rankAB(float a[][20],int r,int c);
main()
{
float a[ 20 ][ 20 ];
int r,c,i,j;
printf("\nEnter number of variables=");
scanf("%d",&r);
c=r+1;
for(i=0;i<r;i++)
{
for(j=0;j<c-1;j++)
{
printf("\nEnter coefficient of x%d=",j);
scanf("%f",&a[i][j]);
}
for(;j<c;j++)
{
printf("\nEnter constant value=");
scanf("%f",&a[i][j]);
}
}
printf("\nThe augmented matrix is \n");
show(a,r,c);
for(i=0;i<r;i++)
{
make1(a,i,r,c);
show(a,r,c);
make0(a,i,r,c);
show(a,r,c);
}
if(rankA(a,r)==r && rankAB(a,r,c)==r)
{
printf("\nSolutions are\n");
for(i=0;i<r;i++)
printf("x%d%d=%f\t",i,i,a[i][c-1]);
}
else if(rankA(a,r)==rankAB(a,r,c))
printf("\nInfinite solutions\n");
else
printf("\nNo solutions\n");
}
int rankA(float a[][20],int r)
{
int rnk=0,i,j;
for(i=0;i<r;i++)
{
if(a[i][i]!=0)
rnk++;
}
return rnk;
}
int rankAB(float a[][20],int r,int c)
{
int rnk=0,i,j;
for(i=0;i<r;i++)
{
if(a[i][i]!=0)
rnk++;
else if(a[i][c]!=0)
rnk++;
}
return rnk;
}
void show(float a[][20],int r,int c)
{
int i,j;
for(i=0;i<r;i++)
{
for(j=0;j<c-1;j++)
{
printf("%20f",a[i][j]);
}
printf(" | %20f",a[i][j]);
printf("\n");
}
printf("\n");
}
void make1( float a[][20], int i,int r,int c )
{
float t=a[i][i];
int j=i;
printf("\nMaking 1\n");
if(t==0)
return;
for(j=i;j<c;j++)
{
a[i][j]=a[i][j]/t;
}
}
void make0( float a[][20], int k,int r,int c )
{
int i,j;
float temp;
printf("\nMaking 0\n");
for(i=0;i<r;i++)
{
if(i!=k)
{
temp=a[i][k];
for(j=k;j<c;j++)
{
a[i][j]=a[i][j]-a[k][j]*temp;
}
}
}
}
void make1( float a[][20],int, int,int );
void make0( float a[][20],int, int,int );
void show(float a[][20],int r,int c);
int rankA(float a[][20],int r);
int rankAB(float a[][20],int r,int c);
main()
{
float a[ 20 ][ 20 ];
int r,c,i,j;
printf("\nEnter number of variables=");
scanf("%d",&r);
c=r+1;
for(i=0;i<r;i++)
{
for(j=0;j<c-1;j++)
{
printf("\nEnter coefficient of x%d=",j);
scanf("%f",&a[i][j]);
}
for(;j<c;j++)
{
printf("\nEnter constant value=");
scanf("%f",&a[i][j]);
}
}
printf("\nThe augmented matrix is \n");
show(a,r,c);
for(i=0;i<r;i++)
{
make1(a,i,r,c);
show(a,r,c);
make0(a,i,r,c);
show(a,r,c);
}
if(rankA(a,r)==r && rankAB(a,r,c)==r)
{
printf("\nSolutions are\n");
for(i=0;i<r;i++)
printf("x%d%d=%f\t",i,i,a[i][c-1]);
}
else if(rankA(a,r)==rankAB(a,r,c))
printf("\nInfinite solutions\n");
else
printf("\nNo solutions\n");
}
int rankA(float a[][20],int r)
{
int rnk=0,i,j;
for(i=0;i<r;i++)
{
if(a[i][i]!=0)
rnk++;
}
return rnk;
}
int rankAB(float a[][20],int r,int c)
{
int rnk=0,i,j;
for(i=0;i<r;i++)
{
if(a[i][i]!=0)
rnk++;
else if(a[i][c]!=0)
rnk++;
}
return rnk;
}
void show(float a[][20],int r,int c)
{
int i,j;
for(i=0;i<r;i++)
{
for(j=0;j<c-1;j++)
{
printf("%20f",a[i][j]);
}
printf(" | %20f",a[i][j]);
printf("\n");
}
printf("\n");
}
void make1( float a[][20], int i,int r,int c )
{
float t=a[i][i];
int j=i;
printf("\nMaking 1\n");
if(t==0)
return;
for(j=i;j<c;j++)
{
a[i][j]=a[i][j]/t;
}
}
void make0( float a[][20], int k,int r,int c )
{
int i,j;
float temp;
printf("\nMaking 0\n");
for(i=0;i<r;i++)
{
if(i!=k)
{
temp=a[i][k];
for(j=k;j<c;j++)
{
a[i][j]=a[i][j]-a[k][j]*temp;
}
}
}
}
No comments:
Post a Comment