Pagini recente » Cod sursa (job #1775781) | Cod sursa (job #2270786) | Cod sursa (job #1811063) | Cod sursa (job #2852805) | Cod sursa (job #2828805)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("gauss.in");
ofstream fout("gauss.out");
const int NMAX = 300;
int N, M;
long double v[NMAX + 5][NMAX + 5];
void swap_linii(int a, int b)
{
for(int i = 1; i <= M + 1; i ++)
{
/*
int aux = v[a][i];
v[a][i] = v[b][i];
v[b][i] = aux;
*/
swap(v[a][i], v[b][i]);
}
}
void afiseaza()
{
fout << '\n';
for(int i = 1; i <= N; i ++)
{
for(int j = 1; j <= M + 1; j ++)
{
fout << v[i][j] << ' ';
}
fout << '\n';
}
fout << '\n';
}
signed main()
{
fin >> N >> M;
for(int i = 1; i <= N; i ++)
{
for(int j = 1; j <= M + 1; j ++)
{
fin >> v[i][j];
}
}
for(int i = 1; i <= M; i ++)
{
if(v[i][i] == 0)
{
for(int j = i + 1; j <= N; j ++)
{
if(v[j][i] != 0)
{
swap_linii(i, j);
break;
}
}
}
for(int j = i; j <= N; j ++)
{
if(v[j][1] == 0)
{
continue;
}
for(int q = 1; q <= M + 1; q ++)
{
v[j][q] /= v[j][1];
}
}
for(int j = i + 1; j <= N; j ++)
{
if(v[j][1] == 0)
{
continue;
}
for(int q = 1; q <= M + 1; q ++)
{
v[j][q] -= v[i][q];
}
}
}
for(int i = M; i >= 1; i --)
{
v[i][M + 1] /= v[i][i];
v[i][i] = 1;
for(int j = i - 1; j >= 1; j --)
{
v[j][M + 1] -= v[j][i] * v[i][M + 1];
v[j][i] = 0;
}
}
for(int i = 1; i <= M; i ++)
{
fout << fixed << setprecision(10) << v[i][M + 1] << ' ';
}
return 0;
}