/** Matrix with back track of alignment. \see Track */ int& track(int row0, int col0) const { ASSERT_MSG(in(row0, col0), (TO_S(row0) + " " + TO_S(col0)).c_str()); int row = row0 + 1, col = col0 + 1; int index = row * cols_1() + col; return matrix_[index * MATRICES_NUMBER + 1]; }
/* * Funcion auxiliar que muestra los puestos disponibles */ void showfree(CLIENT *clnt) { int *rows, *cols; char ** message; char *rows_1_arg; char *cols_1_arg; char *listfree_1_arg; // llamada remota para conocer el numero de filas del vagon rows = rows_1((void*)&rows_1_arg, clnt); if (rows == (int *) NULL) { clnt_perror (clnt, "call failed"); } // llamada remota para conocer el numero de columnas del vagon cols = cols_1((void*)&cols_1_arg, clnt); if (cols == (int *) NULL) { clnt_perror (clnt, "call failed"); } // llamada remota para conocer los puestos disponibles en el vagon message = listfree_1((void*)&listfree_1_arg, clnt); if (message == (char **) NULL) { clnt_perror (clnt, "call failed"); } // imprimir en pantalla los puestos libres int i, j; for (i = 0; i < *rows; i++) { for (j = 0; j < *cols; j++) { if ((*message)[i*(*cols) + j] == '0') { printf("%d:%d;\t", i+1, j+1); } } printf("\n"); } }
void adjust_matrix_size() const { int size = rows_1() * cols_1() * MATRICES_NUMBER; matrix_.resize(size, BAD_VALUE); }