Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2015, 11:57
IVICP3
 
Fecha de Ingreso: febrero-2015
Mensajes: 61
Antigüedad: 9 años, 9 meses
Puntos: 0
Problema con estructuras en C

Tengo un problema para pasar unas estructuras por valor (&).

Aqui las estructuras

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. };





BUSCARPELI --> Aqui vemos primero una funcion que me busca la peli y me devuelve la posicion de esta.

BUSCARACTOR --> Luego le pido al usuario una pelicula y en una funcion donde me devuelve una posicion libre para introducir un actor en esa peli (en la funcion compruebo si el actor no esta repetido).

INTRODUCIRACT --> Por ultimo en la funcio 'introduciract' quiero introducir el actor, le paso por valor la pelicula pero COMO LE PASO LA POSICION PARA INTRODUCIR EL ACTOR? COMO LE PASO LA VARIABLE "CELDA2"??????




Código C:
Ver original
  1. case 2:
  2.         printf("\nIntroduce el titulo de la pelicula para el actor: ");
  3.         fflush(stdin);
  4.         gets(peli);
  5.  
  6.         celda = buscarpeli(pelicula, peli);
  7.  
  8.  
  9.         if(celda!= -1){
  10.             printf("\nNombre del actor: ");
  11.                     fflush(stdin);
  12.                     gets(nom);
  13.  
  14.             celda2 = buscaractor(&pelicula[celda],celda, nom);
  15.  
  16.  
  17.             introduciract(&pelicula[celda],  nom);
  18.  
  19.  
  20.         }else{
  21.             printf("\nNo se encuentra la pelicula");
  22.         }
  23.  
  24.         break;



Tengo una funcion que me dice si hay algun actor repetido en el vector de una pelicula

Código C:
Ver original
  1. bool buscaractor(peliculas pelicula[], int celda, char nom[]){
  2.     int  y=0;
  3.  
  4.                
  5.                                    
  6.  
  7.                     while(pelicula[celda].act[y].edad !=0 &&  strcmp(pelicula[celda].act[y].nombre,nom)!=0 && y<5 ){
  8.                         printf("\nSI");
  9.                         y++;
  10.                     }
  11.                     printf("\nNO");
  12.                    
  13.                 printf("\n RETURN %d", y);
  14.                 return y;
  15.  
  16.            
  17.            
  18. }




ESTA MAL
Código C:
Ver original
  1. bool introduciract(struct peliculas *pelicula, char nom[]){
  2.     int e=0;
  3.                    
  4.                     strcpy(pelicula->act->nombre,nom);
  5.  
  6.  
  7.                        
  8.                        
  9.                         do{
  10.                         printf("\nEdad del actor: ");
  11.                         fflush(stdin);
  12.                         scanf("%d", &pelicula->act->edad);
  13.                         }while(pelicula->act->edad <14  || pelicula->act->edad >85);
  14.  
  15.  
  16.                         //do{
  17.                         printf("\nSexo del actor: ");
  18.                         fflush(stdin);
  19.                         gets(pelicula->act->sexo);
  20.                         //}while(pelicula->act->sexo !='h' || pelicula);
  21.  
  22.                         return true;
  23. }