Pagini recente » Cod sursa (job #844891) | Cod sursa (job #1776949) | Cod sursa (job #2553578) | Cod sursa (job #1645196) | Cod sursa (job #1936170)
#include <fstream>
#include <vector>
using namespace std;
#define EPS 0.0000001
ifstream f("gauss.in");
ofstream g("gauss.out");
int n,m;
double coeficienti[300];
double rezultate[300];
double matrice[300][300];
void reducere_matrice()
{
int i=1,j=0,k;
double fractie;
while(i<n)
{
for(int p=i;p<n;p++)
{
fractie=-(double)matrice[p][j]/matrice[i-1][j];
for(k=j;k<m;k++){
matrice[p][k]=matrice[p][k]+matrice[i-1][k]*fractie;
}
rezultate[p]=(double)rezultate[p]+(double)rezultate[i-1]*fractie;
}
i++;j++;
}
}
int cautare_coeficienti()
{
int i,j,k;
double suma;
k=m;
for(i=n-1;i>=0;i--){
suma=0;
for(j=m-1;j>=k;j--){
suma+=coeficienti[j]*matrice[i][j];
}
if(matrice[i][k-1]==0)
{g<<"imposibil";
return 0;
}
else{
coeficienti[k-1]=(rezultate[i]-suma)/matrice[i][k-1];
k--;
}
}
for(int i=0;i<m;i++)
g<<coeficienti[i]<<" ";
}
int main()
{
f>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
f>>matrice[i][j];
}
f>>rezultate[i];
}
reducere_matrice();
cautare_coeficienti();
/*for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
g<<matrice[i][j]<<' ';
}
g<<rezultate[i]<<"\n";
}*/
f.close();
g.close();
}