Pagini recente » Cod sursa (job #1673338) | Cod sursa (job #2214644) | Cod sursa (job #285539) | Cod sursa (job #2135868) | Cod sursa (job #1846906)
#include<fstream>
#include<cstdlib>
#include <iomanip>
using namespace std;
ifstream f("gauss.in");
ofstream g("gauss.out");
float a[301][301],b[301],x[301],temp;
int i,j,n,m,iv,t,k,l;
void load()
{
f>>n>>m;
for(i=1; i<=n; i++){for(j=1; j<=m; j++)
f>>a[i][j];
f>>b[i];
}
}
void gauss()
{
for(j=1; j<=n-1; j++)
{
iv=j;
t=1;
while((iv<=n) && (t==1))
if(a[iv][j] == 0) iv=iv+1;
else t=0;
if(t==1)
{
g<<"Imposibil";
}
if(j!=iv)
{
for(k=j; k<=m; k++)temp=a[j][k],a[j][k]=a[iv][k],a[iv][k]=temp;
temp=b[j],b[j]=b[iv],b[iv]=temp;
}
for(l=j+1; l<=n; l++)
{
for(k=j+1; k<=m; k++)a[l][k]=a[l][k] - a[j][k] * a[l][j] / a[j][j];
b[l]=b[l] - b[j] * a[l][j] / a[j][j];
}
}
if(a[n][n]==0) g<<"Imposibil";
}
void calc()
{
x[n]=b[n] / a[n][m];
for
(i=n-1; i>=1; i--)
{
temp = b[i];
for
(j=i+1; j<=m; j++) temp = temp - a[i][j] * x[j];
x[i] = temp / a[i][i];
}
}
void dload(){for(i=1; i<=n; i++)g<<setprecision(11)<<x[i]<<' ';}
int main()
{
load();
gauss();
calc();
dload();
return 0;
}