Pagini recente » Cod sursa (job #710768) | Cod sursa (job #2201330) | Cod sursa (job #840432) | Cod sursa (job #420848) | Cod sursa (job #1332942)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
float a[305][305],val[305];
int n,m,lin;
int main()
{ int i,j,lin,col,l,c;
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m+1;j++)
f>>a[i][j];
i=1; j=1;
while (i<=n && j<=m)
{
for(lin=i;lin<=n;lin++)
if (a[i][j]>1e-9 || a[i][j]<-1e-9) break;
if (lin>n) {j++; continue; }
for(col=1;col<=m+1;col++)
swap(a[i][col],a[lin][col]);
for(col=j+1;col<=m+1;col++)
a[i][col]=a[i][col]/a[i][j];
a[i][j]=1;
for(l=1;l<=n;l++)
if (l!=i)
{
for(c=1;c<=m+1;c++)
if (c!=j) a[l][c]-=(a[l][j]/a[i][j])*a[i][c];
a[l][j]=0;
}
for(l=1;l<=n;l++)
{for(c=1;c<=m+1;c++)
cout<<a[l][c]<<" ";
cout<<"\n";
}
cout<<"\n\n";
i++; j++;
}
for(i=n;i>=1;i--)
{
for(j=1;j<=m+1;j++)
if (a[i][j]>1e-9 || a[i][j]<-1e-9) break;
if (j==m+1) {g<<"Imposibil\n"; return 0;}
if (j!=m+2)
{ val[j]=a[i][m+1];
for(c=j+1;c<=m;c++)
val[j]-=a[i][c]*val[c];
}
}
for(i=1;i<=m;i++)
g<<fixed<<setprecision(8)<<val[i]<<" ";
return 0;
}