подскажите как связать это с решением СЛАУ методом Жордана-Гаусса? тоисть заставить искать базисные и опорные решения
| Код | #include "stdafx.h" #include <vector> #include <iostream> #include <conio.h> #include <stdlib.h>
using namespace std;
void main() { int n, m; cin>>n>>m; vector <vector <double> > sist(n, vector <double> (m)); int i, j, k, p, pos, q, i1, j1, j2, x, x1, y, y1=0; double max, g, k1, p1, pos1; //double arr[n][m]; for (i=0; i<n; i++) for (j=0;j<m; j++) cin>>sist[i][j]; for (k=0; k<m-1; k++) { p=q=k; max=sist[k][k]; for (i=k; i<n; i++) for (j=k; j<m-1; j++) if (abs(sist[i][j])>max) { max=sist[i][j]; p=i; q=j; }
for (i=0; i<n; i++) { pos1=sist[i][k]; sist[i][k]=sist[i][q]; sist[i][q]=pos1; } for (j=0; j<m; j++) { pos1=sist[k][j]; sist[k][j]=sist[p][j]; sist[p][j]=pos1; } } for (i=0; i<n; i++){x1=0; for (j=0; j<m; j++){ if (sist[i][j]==0) { x1++; if (x1>=m){ y1++; /*vector <vector <double> > basis(n-y1, vector <double> (n-y1)); for (i1=0; i1<n-y1; i1++){ for (j1=0; j1<n-y1; j1++){ basis[i1][j1]=sist[i1][j1]; } }*/ } } if (i==j && sist[i][j]!=0){ pos=i; g=sist[pos][pos]; for (i1=0; i1<n; i1++){ //if (i1!=pos){ p1=sist[i1][pos]; for (j1=pos; j1<m; j1++){ if (i1!=pos) { k1=sist[pos][j1]*p1/sist[pos][pos]; sist[i1][j1]=sist[i1][j1]-k1; }else sist[i1][j1]=sist[i1][j1]/g; } //else for (j2=0; j2<m; j2++)sist[i1][j2]=sist[i1][j2]/g; } } } } cout<<endl<<endl; if (y1==0) for (i=0; i<n; i++){ for (j=0; j<m; j++) cout<<sist[i][j]<<" "; cout<<endl; } if (y1>0){ cout<<"yo moe"<<endl<<endl; } cout<<endl; getch(); }
|
P.S. понимаю что повтор, но все-таки так больше шансов быть замеченым |