Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2015, 05:49
IVICP3
 
Fecha de Ingreso: febrero-2015
Mensajes: 61
Antigüedad: 9 años, 10 meses
Puntos: 0
¿Como controlar esta excepcion en C?

Tngo un programa que introduce peliculas en una struct, pero tengo que controlar que el nombre de un actor no este en una pelicula. A ver si me podeis ayudar.


Antes de nada os enseño las estructuras de mi programa:

Código C:
Ver original
  1. struct actores{
  2.     char nombre[30];
  3.     int edad;
  4.     char sexo[1];
  5. };
  6.  
  7. struct peliculas {
  8.     char titulo[50];
  9.     char director[35];
  10.     int calificacion;
  11.     struct actores act[5];
  12. };



Aqui teneis varias partes de codigo, primero inicializo todos los valores de la estructura.
Luego, le pido al usuario el nombre de una pelicula, posteriormente llamo a una funcion.

En la funcion comparo si la pelicula que me ha dado el usuario y la que tengo en la estructura coincide, si coincide miro si hay algun actor libre (como pone en la estructura de arriba, máximo 5 actores, por eso el 'for') viendo si la edad es igual a 0 (quiere decir que no se ha introducido ningun actor ahi).

Cuando he localizado un hueco donde hay un actor libre le pido al usuario un nombre y aqui es donde tengo el fallo (LINEA 57, ESE WHILE ESTA MAL).

Tengo que mirar en todos los actores de la estructura si hay un actor con el mismo nombre, porque si hay un actor con el mismo nombre no me tiene que dejar introducir ninguno. Y me he liado bastante en esto.

Gracias.




Código C:
Ver original
  1. for(i=0;i<MAX;i++){
  2.         pelicula[i].titulo[0]='0';
  3.         pelicula[i].director[0]='0';
  4.         pelicula[i].calificacion=0;
  5.        
  6.         for(e=0;e<5;e++){
  7.         pelicula[i].act[e].nombre[0]='0';
  8.         pelicula[i].act[e].edad=0;
  9.         pelicula[i].act[e].sexo[0]='0';
  10.         }  
  11.     }
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18. printf("\nIntroduce el titulo de la pelicula para el actor: ");
  19.         fflush(stdin);
  20.         gets(peli);
  21.  
  22.         introduciract(pelicula, peli);
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29. void introduciract(struct peliculas *pelicula, char peli[]){
  30.     int i, e, y;
  31.     char nom[20];
  32.  
  33.  
  34.  
  35.  
  36.  
  37.     for(i=0;i<MAX;i++){
  38.  
  39.         if(strcmp(pelicula[i].titulo,peli)==0){
  40.  
  41.             printf("\nHAS ENTRADO EN PELI %d", i);
  42.  
  43.             for(e=0;e<5;e++){
  44.                
  45.  
  46.                 if(pelicula[i].act[e].edad==0){
  47.                    
  48.                     printf("\nPELI %d, ACTOR %d", i, e);
  49.                     printf("\n %d", pelicula[i].act[e].edad);
  50.  
  51.  
  52.                     printf("\nNombre del actor: ");
  53.                     fflush(stdin);
  54.                     gets(nom);
  55.  
  56.                    
  57.                         while(strcmp(pelicula[i].act[y].nombre,nom)==0){
  58.                                
  59.                             printf("\nACTOR %d REPEtIDO", y);
  60.                    
  61.  
  62.                         printf("\nVARIABLE Y: %d", y);
  63.  
  64.                         strcpy(pelicula[i].act[y].nombre,nom);
  65.  
  66.                         printf("\nEdad del actor: ");
  67.                         fflush(stdin);
  68.                         scanf("%d", &pelicula[i].act[y].edad);
  69.  
  70.                         printf("\nSexo del actor: ");
  71.                         fflush(stdin);
  72.                         gets(pelicula[i].act[y].sexo);
  73.                         }
  74.                 }
  75.                                
  76.             }
  77.         }
  78. }
  79.  
  80. }