Pagini recente » Cod sursa (job #1792473) | Cod sursa (job #2143513) | Cod sursa (job #285921) | Cod sursa (job #2051142) | Cod sursa (job #1706516)
#include <iostream>
//#include <fstream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
//ifstream si("gauss.in");
//ofstream so("gauss.out");
FILE* si=fopen("gauss.in","r");
FILE* so=fopen("gauss.out","w");
const double VMIN=0.00000000001;
double v[305][305];
double sol[305];
int main()
{
int n,m;
//si>>n>>m;
fscanf(si,"%i %i",&n,&m);
++m;
int i,j;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
fscanf(si,"%lf",&v[i][j]);
int k,l;
i=1;
j=1;
/*
for(k=1;k<=n;++k)
{
for(l=1;l<=m;++l)
cout<<v[k][l]<<' ';
cout<<'\n';
}
cout<<'\n'; */
for(;i<=n&&j<m;j++)
{
for(k=i;k<=n;++k)
{
if(v[k][j]>VMIN||-v[k][j]>VMIN)
break;
}
if(k==n+1)
{
continue;
}
swap(v[i],v[k]);
for(k=j+1;k<=m;++k)
{
v[i][k]/=v[i][j];
}
v[i][j]=1;
for(k=i+1;k<=n;++k)
{
for(l=j+1;l<=m;++l)
{
v[k][l]-=v[k][j]*v[i][l];
}
v[k][j]=0;
}
/*
for(k=1;k<=n;++k)
{
for(l=1;l<=m;++l)
cout<<v[k][l]<<' ';
cout<<'\n';
}
*/
++i;
//cout<<'\n';
}
bool bun=true;
for(i=n;i&&bun;--i)
{
for(j=1;j<=m&&!(v[i][j]>VMIN||-v[i][j]>VMIN);++j);
if(j==m)
{
bun=false;
break;
}
sol[j]=v[i][m];
for(k=j+1;k<m;++k)
{
sol[j]=sol[j]-v[i][k]*sol[k];
}
}
if(bun)
{
for(i=1;i<m;++i)
fprintf(so,"%.10f ",sol[i]);
//cout<<sol[i]<<' ';
fprintf(so,"\n");
//cout<<'\n';
}
else
{
fprintf(so,"Imposibil\n");
//cout<<"Imposibil\n";
}
return 0;
}