void listar(ArrayList* lista,ArrayList* listaDirec) { int i,j; ArrayList* listaOrdenada; listaOrdenada=al_clone(lista); al_sort(listaOrdenada,compareFilms,0); ePelicula* pAuxP; eDirector* pAuxD; for(i=0; i<lista->size; i++) { pAuxP=al_get(listaOrdenada,i); for(j=0; j<listaDirec->size; j++) { pAuxD=al_get(listaDirec,j); if(pAuxP->director==pAuxD->codDirec) { break; } } printf("\nTitulo de la pelicula: %s\nDirector de la pelicula: %s\nNacionalidad de la pelicula: %s\nPuntaje: %d/100\n",pAuxP->titulo,pAuxD->nombre,pAuxP->nacionalidad,pAuxP->puntaje); } al_deleteArrayList(listaOrdenada); }
void informar(ArrayList* lista,ArrayList* listaDirec) { int opcion; printf("1-Top 3 Mejores Peliculas\n"); printf("2-Top 5 Peores Peliculas\n"); scanf("%d",&opcion); switch(opcion) { case 1: if(lista->size>3) { int i,j; int largo; ArrayList* listaOrdenada; ArrayList* top3; listaOrdenada=al_clone(lista); al_sort(listaOrdenada,compareFilms,0); ePelicula* pAuxP; eDirector* pAuxD; top3=al_subList(listaOrdenada,0,2); largo=al_len(top3); for(i=0; i<largo; i++) { pAuxP=al_get(top3,i); for(j=0; j<listaDirec->size; j++) { pAuxD=al_get(listaDirec,j); if(pAuxP->director==pAuxD->codDirec) { break; } } printf("----------[%d]----------",(i+1)); printf("\nTitulo de la pelicula: %s\nDirector de la pelicula: %s\nNacionalidad de la pelicula: %s\nPuntaje: %d/100\n",pAuxP->titulo,pAuxD->nombre,pAuxP->nacionalidad,pAuxP->puntaje); } al_deleteArrayList(listaOrdenada); al_deleteArrayList(top3); } else { showMessage("IMPOSIBLE REALIZAR TOP SIN LA CANTIDAD CORRECTA DE PELICULAS"); } break; case 2: if(lista->size>5) { int i,j; int largo; ArrayList* listaOrdenada; ArrayList* top5; listaOrdenada=al_clone(lista); al_sort(listaOrdenada,compareFilms,1); ePelicula* pAuxP; eDirector* pAuxD; top5=al_subList(listaOrdenada,0,4); largo=al_len(top5); for(i=0;i<largo;i++) { pAuxP=al_get(top5,i); for(j=0;j<listaDirec->size;j++) { pAuxD=al_get(listaDirec,j); if(pAuxP->director==pAuxD->codDirec) { break; } } printf("----------[%d]----------",(i+1)); printf("\nTitulo de la pelicula: %s\nDirector de la pelicula: %s\nNacionalidad de la pelicula: %s\nPuntaje: %d/100\n",pAuxP->titulo,pAuxD->nombre,pAuxP->nacionalidad,pAuxP->puntaje); } al_deleteArrayList(listaOrdenada); al_deleteArrayList(top5); } else { showMessage("IMPOSIBLE REALIZAR TOP SIN LA CANTIDAD CORRECTA DE PELICULAS"); } break; } }
int main() { ArrayList* listPeliculas, *listDirectores,*auxPeliculas, *auxDirectores; ArrayList *backupDirectores = NULL; ArrayList *backupPeliculas = NULL; int auxInt; char opcion; listPeliculas = al_newArrayList(); listDirectores = al_newArrayList(); //readMockDirector(listDirectores); cargarDatos(listPeliculas, "peliculas.dat", 1); cargarDatos(listDirectores, "directores.dat", 2); //readPelicula(listPeliculas); if(listPeliculas != NULL && listDirectores != NULL) { do { opcion = mostrarMenu("1.ALTAS PELICULAS\n2.MODIFICAR PELICULA\n3.BAJA PELICULA\n4.NUEVO DIRECTOR\n5.ELIMINAR DIRECTOR\n6.RECUPERAR\n7.INFORMAR\n8.LISTAR\n9.SALIR\n", '1', '9'); switch(opcion) { case '1': auxInt = agregarPelicula(listPeliculas, listDirectores); if(auxInt == 0) { printf("Pelicula agregada\n"); } PAUSE; CLEAR; break; case '2': auxInt = modificarPelicula(listPeliculas, listDirectores); if(auxInt == 0) { printf("Pelicula modificada\n"); } PAUSE; CLEAR; break; case '3': backupPeliculas = borrarPelicula(listPeliculas); PAUSE; CLEAR; break; case '4': auxInt = agregarDirector(listDirectores); if(auxInt == 0) { printf("Director cargado!\n"); } PAUSE; CLEAR; break; case '5': backupDirectores = borrarDirector(listDirectores); if(backupDirectores != NULL) { printf("Director borrado\n"); } PAUSE; CLEAR; break; case '6': opcion = mostrarMenu("1.RECUPERAR PELICULAS\n2.RECUPERAR DIRECTORES\n", '1', '2'); switch(opcion) { case '1': auxPeliculas = recuperarDatos(listPeliculas, backupPeliculas); if(auxPeliculas == NULL) { printf("No se ha podido recuperar peliculas!\n"); } else { printf("Peliculas recuperadas\n"); listPeliculas = al_clone(auxPeliculas); auxPeliculas->deleteArrayList(auxPeliculas); } break; case '2': auxDirectores = recuperarDatos(listDirectores, backupDirectores); if(auxDirectores == NULL) { printf("No se ha podido recuperar los directores\n"); } else { printf("Directores recuperados\n"); listDirectores = al_clone(auxDirectores); auxDirectores->deleteArrayList(auxDirectores); } break; } PAUSE; CLEAR; break; case '7': auxInt =informar(listPeliculas, listDirectores); if(auxInt == -1) { printf("No se ha podido informar\n"); } PAUSE; CLEAR; break; case '8': auxInt = listar(listPeliculas, listDirectores); PAUSE; CLEAR; break; case '9': auxInt = guardarDatos(listPeliculas, "peliculas.dat", 1); if(auxInt != 0) printf("Hubo un error al guardar las peliculas"); auxInt = guardarDatos(listDirectores, "directores.dat", 2); if(auxInt != 0) printf("Hubo un error al guardar los directores"); listDirectores->deleteArrayList(listDirectores); listPeliculas->deleteArrayList(listPeliculas); break; default: break; } }while(opcion!='9'); } return 0; }