#include"Table.h" #include using namespace std; Table::Table(set imp, set min) { implicants = imp; minterms = min; rowsize = min.size(); colsize = imp.size(); isMarked = new bool* [ colsize ]; for(int c = 0; c < colsize; c++) isMarked[ c ] = new bool[ rowsize ]; int r,c; for(set::iterator it_imp = imp.begin(), r = 0 ;it_imp != imp.end() ;it_imp++, r++) { set::iterator it_tg = (*it_imp).termsGrouped.begin(); for(set::iterator it_min = min.begin(), c = 0 ;it_min != min.end() ;it_min++, c++) { if(*it_tg == *it_min) isMarked[r][c] = true; else isMarked[r][c] = false; if(*it_tg <= *it_min) it_tg++; } } } void Table::deleteImplicant(int cpos) { implicants.erase( getImplicant(cpos) ); for(int c = cpos+1; c0 ) colsize--; } void Table::deleteMinterm(int rpos) { minterms.erase( getMinterm(rpos) ); for(int r = rpos+1; r0 ) rowsize--; } Term Table::getImplicant(int cpos) { set::iterator it_imp = implicants.begin(); while( cpos>0 ) { it_imp++; cpos--; } return *it_imp; } int Table::getMinterm(int rpos) { set::iterator it_min = minterms.begin(); while( rpos>0 ) { it_min++; rpos--; } return *it_min; } void Table::display() { cout<<" "; for(set::iterator it_min = minterms.begin() ;it_min != minterms.end() ;it_min++) { cout.width(2); cout<<*it_min<<" "; } set::iterator it_imp = implicants.begin(); for(int r = 0; r