int main() { citire(); dinamica(); afis(); return 0; }
int main(int argc, char ** argv) { int ** tablero; int dimension; char * fichero; int filini; int colini; int algoritmo; int tipo_salida; par * s; int peso; int aux; crono c; /* argumentos, alguna primera idea!!!! * * camino [opciones] fichero * -f fila * -c columna * -[vdb] voraz dinamica backtraking * -n N * -[am] all info, o minima informacion por pantalla * fichero * * Todos obligatorios! luego tenemos 8 argumentos más el nombre del * programa, tambien damos la opcion a la particula --help * */ if (argc != 10) { return pinta_ayuda(); } for (aux = 1; aux < 10; aux++) { if (strcmp(argv[aux], "-f") == 0) { aux++; filini = atoi(argv[aux]); } else if (strcmp(argv[aux], "-c") == 0) { aux++; colini = atoi(argv[aux]); } else if (strcmp(argv[aux], "-n") == 0) { aux++; dimension = atoi(argv[aux]); } else if (strcmp(argv[aux], "-v") == 0) { algoritmo = VORAZ; } else if (strcmp(argv[aux], "-vm") == 0) { algoritmo = VORAZMEJORADO; } else if (strcmp(argv[aux], "-d") == 0) { algoritmo = DINAMICA; } else if (strcmp(argv[aux], "-b") == 0) { algoritmo = BT; } else if (strcmp(argv[aux], "-a") == 0) { tipo_salida = ALLINFO; } else if (strcmp(argv[aux], "-m") == 0) { tipo_salida = MINIMO; } else { fichero = argv[aux]; } } /* aunque no tratemos todas las situaciones, por lo menos hacemos una * pequeña comprobacion*/ if ((filini > dimension) || (colini > dimension)) { fprintf(stderr, "Fila o columna erroneas: fuera del rango\n"); return -1; } tablero = leer_tablero(fichero, dimension); if (tablero == NULL) { fprintf(stderr, "ERROR obteniendo el tablero.\n"); return -1; } /* reservamos la memoria para s! */ s = (par *)malloc(MAXNIVEL*sizeof(par)); /* y aplicamos el algoritmo segun la entrada */ switch (algoritmo) { case VORAZ: start_crono(&c); if (voraz(tablero, dimension, filini, colini,&peso, s) == -1) { printf("%d No hay solucion\n", dimension); stop_crono(&c); return -1; } stop_crono(&c); break; case VORAZMEJORADO: start_crono(&c); if (voraz_mejorado(tablero, dimension, filini, colini, &peso, s) == -1) { printf("%d No hay solucion\n", dimension); stop_crono(&c); return -1; } stop_crono(&c); break; case DINAMICA: start_crono(&c); dinamica(tablero, dimension, filini, colini, &peso, s); stop_crono(&c); break; case BT: start_crono(&c); bt(tablero, dimension, filini, colini, &peso, s); stop_crono(&c); break; default: ; } if (tipo_salida == ALLINFO) { pinta_solucion(s, peso, algoritmo, dimension, c); } else { pinta_solucion_minima(dimension, algoritmo, c); } return 0; }