Pagini recente » Cod sursa (job #1863301) | Cod sursa (job #1002513) | Cod sursa (job #1506456) | Cod sursa (job #2595078) | Cod sursa (job #609033)
Cod sursa(job #609033)
#include <fstream>
using namespace std;
ifstream f("gauss.in");
ofstream o("gauss.out");
int n,m,i,j,k,p,aux;
double a[301][305],x[301],val;
int main(void)
{
f>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m+1;j++)
f>>a[i][j];
for (i=1,j=1;i<=n && j<=m;)
{
k=i;
while (!a[k][j] && k<=n) k++;
if (k>n) {j++; continue;}
if (k!=i)
{
for (p=1;p<=m+1;p++)
{aux=a[i][p]; a[i][p]=a[k][p]; a[k][p]=aux;}
}
val=a[i][j];
for (p=1;p<=m+1;p++)
a[i][p]/=val;
for (k=i+1;k<=n;k++)
{
val=a[k][j];
for (p=j;p<=m+1;p++)
a[k][p]-=val*a[i][p];
}
i++;
j++;
}
for (i=n;i>=1;i--)
{
j=1;
while (!a[i][j] && j<=m) j++;
if (j>m && a[i][m+1]!=0) {o<<"Imposibil\n"; return 0;}
if (j>m) continue;
x[j]=a[i][m+1];
for (k=m;k>j;k--)
x[j]-=a[i][k]*x[k];
}
o<<fixed;
for (i=1;i<=m;i++)
o<<x[i]<<" ";
o<<"\n";
o.close();
return 0;
}