Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Codigo con errores.

Estas en el tema de Codigo con errores. en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/12/2010, 09:39
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 13 años, 4 meses
Puntos: 0
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.
  #2 (permalink)  
Antiguo 13/12/2010, 17:41
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Codigo con errores.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. /* enumerados,struct,typedef  */
  5.  
  6. typedef enum generoFilm{
  7.   comedia,
  8.   drama,
  9.   terror,
  10.   belica,
  11.   otros
  12. }miGenero;
  13. typedef  struct cine {
  14.    char titulo[40];
  15.    enum  generoFilm miGenero;
  16.    int miDia;
  17.    int miMes;
  18.    int miHora;
  19.    int miAgno;
  20. }tipocine;
  21.  
  22. char *prompts[5] = {
  23.    "Alta de pelicula", "Vender entradas",
  24.    "Listado de peliculas", "Mostrar calendario de peliculas",
  25.    "Salir" };
  26.    
  27.  
  28.  
  29. /* funciones */
  30. void alta_Pelicula(tipocine *,int *);
  31. void venta_Ticket(tipocine.[titulo] *,int tickets){      primero lo llamas venta y luego vender
  32. char bufer[80];
  33. printf("Titulo de pelicula: ");
  34. fgets(bufer,sizeof(bufer),stdin);
  35. printf("numero de tickets: ");
  36. scanf("%d",&tickets);
  37. };
  38. void listado_Peliculas(){
  39. char bufer[80];
  40. printf("Genero de pelicula: ");
  41. fgets(bufer,sizeof(bufer),stdin);
  42.                                                             falta cerrar la llave }
  43.  
  44. /* funciones*/
  45.  
  46. int main(){
  47.  
  48.    char espacios[40];
  49.    int i,j;
  50.    char option;
  51.    printf( "         GESTION PELICULAS\n" );
  52.    printf( "     ========================\n" );
  53.  
  54.    for( j=0; j<5; j++ )
  55.    {
  56.      
  57.       printf( prompts[j] );
  58.      
  59.        
  60.       for ( i = 0; i < 35 - strlen(prompts[j]); i++ )
  61.       {
  62.          espacios[i] = ' ';
  63.       }
  64.  
  65.          espacios[i]='\0';
  66.  
  67.      
  68.       printf( "%s<Pulsar %c>\n",espacios , prompts[j][0] );
  69.    }
  70.    printf("     =========================\n");
  71.    printf("    INTRODUZCA UNA OPCION VALIDA A|V|L|M|S\n");
  72.    scanf("%c",&option);
  73.    while ((option!='A')&&(option!='V')&&(option!='L')&&(option!='M')&&(option!='S'))printf("error opcion no valida");
  74.      
  75.   switch(option){
  76. case 'A':alta_Pelicula(tipocine *cine,int *nexEntry);
  77.  
  78.      break;
  79. case 'V':vender_Ticket(tipocine.titulo,int tickets);   donde esta declarado tickets???  tipocine es un tipo de estructura no es una variable
  80.      break;
  81.      default:salir;     ¿¿¿ salir ???
  82. break;}
  83.    
  84.    
  85.      
  86.  
  87.     int next = 0;
  88.    tipocine cines[30];      MAL estas declarando la estructura cine despues de usarla
  89.  
  90.   while( next < 30 )      next = 0, while se cumple SIEMPRE => BUCLE INFINITO!! añade next++; dentro del while
  91.    {
  92.      
  93.       alta_Pelicula( cines, &next );
  94.    }
  95.    
  96. };
  97.  
  98. void alta_Pelicula( tipocine  *cine, int *nextEntry ){
  99.    char bufer[80];
  100.    char titulo[40];
  101.    char *p;
  102.    enum generoFilm  miGenero;
  103.    int miDia;
  104.    int miMes;
  105.    int miHora;
  106.    int miAgno;
  107.    int i;
  108.          
  109.    printf("\n=== Alta Pelicula ===\n");
  110.  
  111.    printf( " proxima pelicula : %d\n", *nextEntry );
  112.  
  113.    
  114.    if( *nextEntry == 30 )
  115.    {
  116.       printf("error, no se admiten más peliculas.\n");
  117.       return;
  118.    }
  119.  
  120.    
  121.    printf("Titulo: ");
  122.    fgets( bufer, sizeof(bufer), stdin );
  123.    printf("Genero: ");fgets(bufer,sizeof(bufer),stdin);
  124.    printf("Dia: ");scanf("%d",&miDia);
  125.    printf("Mes: ");scanf("%d",&miMes);
  126.    printf("Anno: ");scanf("%d",&miAgno);
  127.    printf("Hora: ");scanf("%d",&miHora);
  128.    printf("Genero: ");fgets(bufer,sizeof(bufer),stdin);
  129.        
  130.    i = 0;
  131.    p = bufer;
  132.    
  133.    while( *p != '\n' && i<sizeof(titulo) ) {
  134.       titulo[i++] = *p++;
  135.    }
  136.    titulo[i] = '\0';
  137.    
  138.    i=0;
  139.    while( i < *nextEntry ) {
  140.          printf(" Comparacion '%s' to '%s'\n", titulo, cine[i].titulo );
  141.      if( strcmp( cine[i].titulo, titulo ) == 0 ) {
  142.         printf("error, film ya esta en la lista.\n");
  143.         return;
  144.      }else {
  145.          printf("Day: ");
  146.          scanf("%d",&miDia);}
  147.      i++;
  148.    }
  149.    
  150.    strcpy( cine[*nextEntry].titulo, titulo );
  151.  
  152.    printf( " Added: %s\n", cine[*nextEntry].titulo );
  153.    
  154.    *nextEntry = *nextEntry+1;
  155.    printf( " incrementado la proxima entrada del array: %d\n\n", *nextEntry );
  156.  
  157. }

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
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. /* enumerados,struct,typedef  */
  5.  
  6. typedef enum generoFilm{
  7.   comedia,
  8.   drama,
  9.   terror,
  10.   belica,
  11.   otros
  12. }miGenero;
  13. typedef  struct cine {
  14.    char titulo[40];
  15.    enum  generoFilm miGenero;
  16.    int miDia;
  17.    int miMes;
  18.    int miHora;
  19.    int miAgno;
  20. }tipocine;
  21.  
  22. char *prompts[5] = {
  23.    "Alta de pelicula", "Vender entradas",
  24.    "Listado de peliculas", "Mostrar calendario de peliculas",
  25.    "Salir" };
  26.    
  27.  
  28.  
  29. /* funciones */
  30. void alta_Pelicula(tipocine  *cine,int *);
  31. void vender_Ticket(int tickets){        
  32. char bufer[80];
  33. printf("Titulo de pelicula: ");
  34. fgets(bufer,sizeof(bufer),stdin);
  35. printf("numero de tickets: ");
  36. scanf("%d",&tickets);
  37. };
  38. void listado_Peliculas(){
  39. char bufer[80];
  40. printf("Genero de pelicula: ");
  41. fgets(bufer,sizeof(bufer),stdin);
  42. }      
  43.  
  44.  
  45. /* funciones*/
  46.  
  47. int main(){
  48.  
  49.    char espacios[40];
  50.    int i,j, tickets=0, nexEntry=0;
  51.    char option;
  52.    tipocine cines[30];
  53.    printf( "         GESTION PELICULAS\n" );
  54.    printf( "     ========================\n" );
  55.  
  56.    for( j=0; j<5; j++ )
  57.    {
  58.      
  59.       printf( prompts[j] );
  60.      
  61.        
  62.       for ( i = 0; i < 35 - strlen(prompts[j]); i++ )
  63.       {
  64.          espacios[i] = ' ';
  65.       }
  66.  
  67.          espacios[i]='\0';
  68.  
  69.      
  70.       printf( "%s<Pulsar %c>\n",espacios , prompts[j][0] );
  71.    }
  72.    printf("     =========================\n");
  73.    printf("    INTRODUZCA UNA OPCION VALIDA A|V|L|M|S\n");
  74.    scanf("%c",&option);
  75.    while ((option!='A')&&(option!='V')&&(option!='L')&&(option!='M')&&(option!='S'))printf("error opcion no valida");
  76.      
  77.   switch(option){
  78. case 'A': alta_Pelicula(cines, &nexEntry);
  79.  
  80.      break;
  81. case 'V': vender_Ticket(tickets);
  82.      break;
  83.      default: return 0;
  84. break;}
  85.    
  86.    
  87.      
  88.  
  89.    nexEntry = 0;
  90.    
  91.  
  92.   while( nexEntry < 30 )          
  93.    {
  94.      
  95.       alta_Pelicula( cines, &nexEntry);
  96.       nexEntry++;
  97.    }
  98.    return 0;
  99. };
  100.  
  101. void alta_Pelicula( tipocine  *cine, int *nextEntry ){
  102.    char bufer[80];
  103.    char titulo[40];
  104.    char *p;
  105.    enum generoFilm  miGenero;
  106.    int miDia;
  107.    int miMes;
  108.    int miHora;
  109.    int miAgno;
  110.    int i;
  111.          
  112.    printf("\n=== Alta Pelicula ===\n");
  113.  
  114.    printf( " proxima pelicula : %d\n", *nextEntry );
  115.  
  116.    
  117.    if( *nextEntry == 30 )
  118.    {
  119.       printf("error, no se admiten más peliculas.\n");
  120.       return;
  121.    }
  122.  
  123.    
  124.    printf("Titulo: ");
  125.    fgets( bufer, sizeof(bufer), stdin );
  126.    printf("Genero: ");fgets(bufer,sizeof(bufer),stdin);
  127.    printf("Dia: ");scanf("%d",&miDia);
  128.    printf("Mes: ");scanf("%d",&miMes);
  129.    printf("Anno: ");scanf("%d",&miAgno);
  130.    printf("Hora: ");scanf("%d",&miHora);
  131.    printf("Genero: ");fgets(bufer,sizeof(bufer),stdin);
  132.        
  133.    i = 0;
  134.    p = bufer;
  135.    
  136.    while( *p != '\n' && i<sizeof(titulo) ) {
  137.       titulo[i++] = *p++;
  138.    }
  139.    titulo[i] = '\0';
  140.    
  141.    i=0;
  142.    while( i < *nextEntry ) {
  143.          printf(" Comparacion '%s' to '%s'\n", titulo, cine[i].titulo );
  144.      if( strcmp( cine[i].titulo, titulo ) == 0 ) {
  145.         printf("error, film ya esta en la lista.\n");
  146.         return;
  147.      }else {
  148.          printf("Day: ");
  149.          scanf("%d",&miDia);}
  150.      i++;
  151.    }
  152.    
  153.    strcpy( cine[*nextEntry].titulo, titulo );
  154.  
  155.    printf( " Added: %s\n", cine[*nextEntry].titulo );
  156.    
  157.    *nextEntry = *nextEntry+1;
  158.    printf( " incrementado la proxima entrada del array: %d\n\n", *nextEntry );
  159.  
  160. }
  #3 (permalink)  
Antiguo 15/12/2010, 14:42
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 13 años, 4 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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:11.