Mam w swojej klasie przeciążony operator ,,<<'', tak żebym mógł wynik działania klasy wyświetlić na konsoli.
Kod: Zaznacz cały
friend ostream &operator <<(ostream &out,const BLSolver &solver)
Kod: Zaznacz cały
friend ostream &operator <<(ostream &out,const BLSolver &solver)
Kod: Zaznacz cały
int main(){
BLSolver solver;
char name[50];
cout << "Input filename : "; cin >> name;
fstream fs("./solution.txt",ios: :o ut);
if(solver >> name){
cout << "Equasion = " << solver.getMainMatrix().getRows() << endl;
cout << "Max variables = " << solver.getMainMatrix().getCols() << endl;
if(!solver.solve()){
cerr << "\nFailed to solve\n" << endl;
cout << "Error code = " << solver.getError() << endl;
return solver.getError();
}else{
cout << solver;
fs << solver;
fs.close();
}
}else{
cerr << "\nFailed to load the data\n" << endl;
cout << "Error code = " << solver.getError() << endl;
return solver.getError();
}
return solver.getError();
}
Kod: Zaznacz cały
friend ostream &operator <<(ostream &out,const BLSolver &solver){
//creating output
double helper;
out << "Equasions set\n";
for(short i = 0 ; i < solver.mainMatrix->getRows() ; i++){
for(short j = 0 ; j < solver.mainMatrix->getColsAt(i) ; j++){
helper = solver.mainMatrix->getAt(i,j);
if(helper != 0){
if(helper < 0) out << " - ";
else out << " + ";
out << abs(helper) << "x" << j+1 << " ";
}
}
out <<" = "<<solver.freeVars->getAt(i,0) << endl;
}
if(!solver.solutions.empty()){
out <<"\nPossible solutions\n";
for(unsigned r = 0 ; r < solver.solutions.size() ; r++){
cout<<"Solution number "<<r+1<<"\n";
cout<<"Solution is ";
switch(solver.solutions.at(r).type){
case NORMAL: out << "acceptable" <<endl; break;
case DEGENERATED: out << "degenerated, but acceptable" <<endl; break;
case BAD: out << "- like it would be insanity to accept it"<<endl; break;
case REJECTED: out << " rejected because of null determinant"<<endl<<endl; break;
}
if(solver.solutions.at(r).sol != NULL){
Matrix *tmp = solver.solutions.at(r).sol;
for(short r2 = 0 ; r2 < tmp->getRows() ; r2++){
cout <<"X" << solver.solutions.at(r).columns.at(r2)+1 << " = " << tmp->getAt(r2,0) << endl;
}
cout << endl;
}
}
}
return out;
}