Pagini recente » Cod sursa (job #1993011) | Cod sursa (job #2132539) | Cod sursa (job #1988856) | Cod sursa (job #667510) | Cod sursa (job #1232772)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin ("gauss.in");
ofstream fout ("gauss.out");
double a[310][310],x[310];
int n,m,i,j,k,l,aux;
double modul (double x) {
return (x>0?x:-x);
}
int main () {
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m+1;j++)
fin>>a[i][j];
i=1;j=1;
while (i<=n && j<=m){
for (k=i;k<=n;k++)
if (modul(a[k][i])>=0.00000001)
break;
if (k==n+1) {
j++;
continue;
}
if (k!=i)
for (l=j;l<=m+1;l++){
aux=a[k][l];
a[k][l]=a[i][l];
a[i][l]=aux;
}
for (l=j+1;l<=m+1;l++)
a[i][l]/=a[i][j];
a[i][j]=1;
for (k=i+1;k<=n;k++){
for(l =j+1;l<=m+1;l++)
a[k][l]-=a[k][j]*a[i][l];
a[k][j]=0;
}
i++;j++;
}
for (i=n;i>=1;i--) {
for (j=1;j<=m+1;j++)
if (modul(a[i][j])>0.0000001)
break;
if (j==m+1) {
fout<<"Imposibil\n";
return 0;
}
x[j]=a[i][m+1];
for (k=j+1;k<=m;k++)
x[j]-=a[i][k]*x[k];
}
fout<<setprecision(8) <<fixed;
for (i=1;i<=n;i++)
fout<<x[i]<<" ";
return 0;
}