Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/12/2010, 14:42
flamingo
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 13 años, 5 meses
Puntos: 0
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.