You are on page 1of 5

#include<stdio.

h>

#include<math.h>

#include<stdlib.h>

int main()

float a[20][20], s, aux, eps=0.0000001;

int n, i, j, h, k, piv;

printf("n= ");

scanf("%d", &n);

printf("Elementele matricii: \n");

for(i=1; i<=n; ++i)

for(j=1; j<=n+1; ++j)

printf("a[%d][%d] = ", i, j);

scanf("%f", &a[i][j]);

if (a[1][1] == 0)

i = 1;

do{

i = i + 1;

}while(a[i][1] == 0 || i <= n);

if(i <= n)

printf("Sistemul nu are solutie unica");

exit(0);
}

for(j=1; j<=n+1; j++)

aux = a[1][j];

a[1][j] = a[i][j];

a[i][j] = aux;

for(i=2; i<=n; i++)

a[i][1] = a[i][1]/a[1][1];

for(k=2; k<=n; k++)

i = k;

do{

s = 0; piv = 0;

for(h=1; h<=k-1; h++)

s = s + a[i][h]*a[h][k];

piv = a[i][k] - s;

i = i + 1;

}while(piv == 0 || i <= n);

if( piv == eps )

printf("Sistemul nu are sol. unica");

exit(1);

}
if( i != k+1 )

for(j=1; j<=n+1; j++)

aux = a[k][j];

a[k][j] = a[i-1][j];

a[i-1][j] = aux;

for(j = k; j<=n; j++)

s = 0;

for(h=1; h<=k-1; h++)

s = s + a[k][h]*a[h][j];

a[k][j] = a[k][j] - s;

for(i=k+1; i<=n; i++)

s = 0;

for(h=1; h<=k-1; h++)

s = s + a[i][h]*a[h][k];

a[i][k] = (a[i][k] - s)/a[k][k];

for(i=1;i<=n;i++)
{

printf("\n");

for(j=1 ;j<=n+1;j++)

printf(" %f ",a[i][k]*a[k][j]);

for(i=2; i<=n; i++)

s = 0;

for(k=1; k<=i-1; k++)

s = s + a[i][k]*a[k][n+1];

a[i][n+1] = a[i][n+1] - s;

a[n][n+1] = a[n][n+1]/a[n][n];

for(i=n-1; i>=1; --i)

s = 0;

for(j=i+1; j<=n; ++j)

s = s + a[i][j]*a[j][n+1];

a[i][n+1] = (a[i][n+1] - s)/a[i][i];

printf("\nSolutia sistemului:\n");

for(i=1; i<=n; ++i)

printf("x[%d]= %f\n", i, a[i][n+1]);


}

return 0;

You might also like