// solve command in 'Rparser' class void NodeList:: solve() { bool isDone = false; while (!isDone) { isDone = true; for (Node *curr = head; curr != NULL; curr = curr->next ) { if (!(curr->isSet)) { double newVoltage = solveHelper(curr); double change = abs (newVoltage - curr->getVoltage()); curr->setVoltage(newVoltage); // unless any change in voltage > 0.0001, isDone is kept 'true' if (change > MIN_ITERATION_CHANGE) isDone = false; } } } Node *curr = head; while (curr != NULL) { //print if the node's resistorList has more than one resistor if (curr->getResistorList().getNumRes() != 0) cout << " Node "<< curr->nodeId << ": "<<curr->voltage<< " V"<<endl; curr = curr->next; } }
bool Sudoku::solveHelper(int row, int col) { if( board[row][col] == 0 ){ for(int k=1; k<10; k++){ board[row][col] = k; if( isValid(row, col) ){ if( row == 8 && col == 8 ) return true; //at end of puzzle; last square else if( col == 8 ) { //jump to next row if at end of columns if( solveHelper(row+1, 0) ) return true; else board[row][col] = 0; } else if( solveHelper(row, col+1) ) return true; //else increment column else board[row][col] = 0; } else board[row][col] = 0; //reset for next number if( k==9 ) return false; //if no numbers fit } } if(row == 8 && col == 8 ) return true; else if( col == 8 ) return solveHelper(row+1, 0); else return solveHelper(row, col+1); }
bool Sudoku::solve(){ return solveHelper(0, 0); }