| |||
Codigo con errores. Hola, estoy intentado tirar para adelante un codigo para gestionar una sala de cine, donde solo puede haber de alta 30 peliculas. Tengo el siguiente codigo y al compilar me tira errores: linea 76 expected expression before 'tipocine',linea 76 too few arguments to function 'alta_Pelicula',linea 79 expected expression before 'tipocine',linea 157 error expected declaration o statement at end of input. Alguien que esté puesto podría echar un vistazo y explicarme por qué?http://pastebin.ca/2018402,gracias de antemano. |
| ||||
Respuesta: Codigo con errores.
Código C:
Ver original no he comentado todos los errores, si tienes alguna duda pregunta aqui te dejo el codigo corregido y sin errores de compilacion (bueno si hay uno que ahora no caigo que puede ser: for ( i = 0; i < 35 - strlen(prompts[j]); i++ ) )
Código C:
Ver original |
| |||
Respuesta: Codigo con errores. Gracias Munire ciertamente compila pero no acaba de dar resultados deseados, de momento la función que quiero perfilar es la de alta de peliculas, y veo que el filtro que detecta la repetición de un titulo no funciona, while( i < *nextEntry ) { printf(" Comparacion '%s' to '%s'\n", titulo, cine[i].titulo ); if( strcmp( cine[i].titulo, titulo ) == 0 ) { printf("error, film ya esta en la lista.\n"); aparte de que en la primera ejecucion arroja "titulo:dia: luego a la siguiente pelicula ya sale por separado los campos, titulo: dia: , al menos ha sido un avance que ya compile, aunque creo que hay código que quizá no está debidamente escrito, la verdad que es prestado. #include <stdio.h> #include <string.h> /* enumerados,struct,typedef */ typedef enum generoFilm{ comedia, drama, terror, belica, otros }miGenero; typedef struct cine { char titulo[40]; enum generoFilm miGenero; int miDia; int miMes; int miHora; int miAgno; }tipocine; char *prompts[5] = { "Alta de pelicula", "Vender entradas", "Listado de peliculas", "Mostrar calendario de peliculas", "Salir" }; /* funciones */ void alta_Pelicula(tipocine *cine,int *); void vender_Ticket(int tickets){ char bufer[80]; printf("Titulo de pelicula: "); fgets(bufer,sizeof(bufer),stdin); printf("numero de tickets: "); scanf("%d",&tickets); }; void listado_Peliculas(){ char bufer[80]; printf("Genero de pelicula: "); fgets(bufer,sizeof(bufer),stdin); } /* funciones*/ int main(){ char espacios[40]; int i,j, tickets=0, nexEntry=0; char option; tipocine cines[30]; printf( " GESTION PELICULAS\n" ); printf( " ========================\n" ); for( j=0; j<5; j++ ) { printf( prompts[j] ); for ( i = 0; i < 35 - strlen(prompts[j]); i++ ) { espacios[i] = ' '; } espacios[i]='\0'; printf( "%s<Pulsar %c>\n",espacios , prompts[j][0] ); } printf(" =========================\n"); printf(" INTRODUZCA UNA OPCION VALIDA A|V|L|M|S\n"); scanf("%c",&option); while ((option!='A')&&(option!='V')&&(option!='L')&&(opt ion!='M')&&(option!='S'))printf("error opcion no valida"); switch(option){ case 'A': alta_Pelicula(cines, &nexEntry); break; case 'V': vender_Ticket(tickets); break; default: return 0; break;} nexEntry = 0; while( nexEntry < 30 ) { alta_Pelicula( cines, &nexEntry); nexEntry++; } return 0; }; void alta_Pelicula( tipocine *cine, int *nextEntry ){ char bufer[80]; char titulo[40]; char *p; enum generoFilm miGenero; int miDia; int miMes; int miHora; int miAgno; int i; printf("\n=== Alta Pelicula ===\n"); printf( " proxima pelicula : %d\n", *nextEntry ); if( *nextEntry == 30 ) { printf("error, no se admiten más peliculas.\n"); return; } else{ printf("Titulo: "); fgets( bufer, sizeof(bufer), stdin ); printf("Dia: ");scanf("%d",&miDia); printf("Mes: ");scanf("%d",&miMes); printf("Anno: ");scanf("%d",&miAgno); printf("Hora: ");scanf("%d",&miHora); printf("Genero: ");fgets(bufer,sizeof(bufer),stdin); } i = 0; p = bufer; while( *p != '\n' && i<sizeof(titulo) ) { titulo[i++] = *p++; } titulo[i] = '\0'; i=0; while( i < *nextEntry ) { printf(" Comparacion '%s' to '%s'\n", titulo, cine[i].titulo ); if( strcmp( cine[i].titulo, titulo ) == 0 ) { printf("error, film ya esta en la lista.\n"); return; }else { printf("Day: "); scanf("%d",&miDia);} i++; } strcpy( cine[*nextEntry].titulo, titulo ); printf( " Added: %s\n", cine[*nextEntry].titulo ); *nextEntry = *nextEntry+1; printf( " incrementada entrada del array: %d\n\n", *nextEntry); } Este es el código ya corregido por ti, el menú lo imprime bien y la opcion cuando no es valída(A o V o L o M o S) no la detecta tampoco se queda paralizado el programilla y luego emite un bucle infinito de error opcionnovalida error opcionnovalida error .................,interesante aporte Munire. |