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

Problema con estructuras en C

Estas en el tema de Problema con estructuras en C en el foro de C/C++ en Foros del Web. Buenas tengo un problema con un programa usando structs. Programa donde guardo structs de peliculas y actores. En el case 1 del switch guardo una ...
  #1 (permalink)  
Antiguo 13/05/2015, 10:58
 
Fecha de Ingreso: febrero-2015
Mensajes: 61
Antigüedad: 9 años, 9 meses
Puntos: 0
Problema con estructuras en C

Buenas tengo un problema con un programa usando structs.

Programa donde guardo structs de peliculas y actores. En el case 1 del switch guardo una pelicula, pero en el case 2 es donde tengo problemas.

El programa esta incompleto a partir del case 3.





En la funcion "bool introduciract" lo que estoy haciendo es primero comprobar si la peli que le he pasado existe, si existe comprobamos si queda hueco para introducir un actor (máximo 5), y por ultimo si hay hueco pues creo un actor.

Tras esto, hago un for que recorre 5 veces la estructura de pelicula, para saber si en la pelicula hay un actor igual al que acabo de crear (su nombre vamos) , sino hay uno igual tengo que introducir el actor que acabo de crear en el hueco libre (que es "pos").

Como hago eso??? Como introduzco en ese hueco libre el actor que acabo de crear, no se programar esa linea ya que he probado varias formas y me da error el programa. Solo tengo un "return true", para saber que ha entrado dentro del if.


GRACIAS.





PROGRAMA PRINCIPAL
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<string.h>
  4.  
  5. #define MAX 100
  6. #define MAX2 5
  7.  
  8. struct actores{
  9.     char nombre[30];
  10.     int edad;
  11.     char sexo[1];
  12. };
  13.  
  14. struct peliculas {
  15.     char titulo[50];
  16.     char director[35];
  17.     int calificacion;
  18.     struct actores act[5];
  19. };
  20.  
  21. #include "funciones.h"
  22.  
  23.  
  24. void main(){
  25.     struct actores actor[MAX];
  26.     struct peliculas pelicula[MAX];
  27.     int opcion, i;
  28.     char peli[50];
  29.  
  30.  
  31.     for(i=0;i<MAX;i++){
  32.         pelicula[i].titulo[0]='0';
  33.         pelicula[i].director[0]='0';
  34.         pelicula[i].calificacion=0;
  35.         pelicula[i].act[i].nombre[0]='0';
  36.         pelicula[i].act[i].edad=0;
  37.         pelicula[i].act[i].sexo[0]='0';
  38.     }
  39.  
  40.  
  41.  
  42.  
  43.  
  44.     cargar(pelicula);
  45.  
  46.  
  47.  
  48.     do{
  49.     opcion=menu();
  50.  
  51.  
  52.     switch(opcion){
  53.     case 1:
  54.         if(celdalibre(pelicula)==true){
  55.             introducirpel(pelicula);
  56.  
  57.         }else{
  58.             printf("\nNo hay espacio libre para introducir peliculas");
  59.         }
  60.         break;
  61.  
  62.     case 2:
  63.         printf("\nIntroduce el titulo de la pelicula para el actor: ");
  64.         fflush(stdin);
  65.         gets(peli);
  66.  
  67.         if(introduciract(actor, pelicula, peli)==true){
  68.             printf("Actor introducido correctamente");
  69.                
  70.  
  71.         }else{
  72.             printf("\nError:(");
  73.  
  74.         }
  75.         break;
  76.  
  77.     case 3:
  78.  
  79.         break;
  80.  
  81.     case 4:
  82.  
  83.         break;
  84.  
  85.     case 5:
  86.  
  87.         break;
  88.  
  89.     case 6:
  90.  
  91.         break;
  92.     }
  93.  
  94.  
  95.     }while(opcion!=0);
  96.  
  97.  
  98.     printf("\n");
  99.  
  100.     system("pause");
  101.  
  102.  
  103.  
  104. }




LIBRERIA DEL PROGRAMA
FUNCIONES.H
Código C:
Ver original
  1. int menu(){
  2.     int opcion;
  3.  
  4.     do{
  5.     printf("\n<----------APLICACION DEL CINEFILO---------->");
  6.     printf("\n1.Alta pelicula.");
  7.     printf("\n2.Alta actor.");
  8.     printf("\n3.Mostrar pelicula.");
  9.     printf("\n4.Borrar película.");
  10.     printf("\n5.Borrar actor.");
  11.     printf("\n6.Mostrar actores por sexo.");
  12.     printf("\n0.Salir");
  13.     printf("\n");
  14.  
  15.     printf("\nOpcion: ");
  16.     fflush(stdin);
  17.     scanf("%d", &opcion);
  18.     }while(opcion<0 || opcion>6);
  19.  
  20.     return opcion;
  21. }
  22.  
  23.  
  24.  
  25.  
  26. bool celdalibre(struct peliculas *pelicula){
  27.     int i;
  28.  
  29.     for(i=0;i<MAX;i++){
  30.         if(pelicula[i].calificacion==0){
  31.             return true;
  32.         }
  33.     }
  34.  
  35.     return false;
  36. }
  37.  
  38.  
  39. void introducirpel(struct peliculas *pelicula){
  40.  
  41.     while(pelicula->calificacion!=0){
  42.         pelicula++;
  43.     }
  44.  
  45.     printf("Titulo de la pelicula: ");
  46.     fflush(stdin);
  47.     gets(pelicula->titulo);
  48.  
  49.     printf("Nombre del director: ");
  50.     fflush(stdin);
  51.     gets(pelicula->director);
  52.  
  53.     do{
  54.     printf("Calificacion: ");
  55.     fflush(stdin);
  56.     scanf("%d", &pelicula->calificacion);
  57.     }while(pelicula->calificacion<1 || pelicula->calificacion>5);
  58. }
  59.  
  60. bool introduciract(struct actores *actor, struct peliculas *pelicula, char peli[]){
  61.     int i, pos=0;
  62.  
  63.  
  64.     for(i=0;i<MAX;i++,pelicula++){
  65.         if(strcmp(pelicula[i].titulo,peli)==0){
  66.             if((pelicula[i].act[i].edad)==0){
  67.                 i=pos;
  68.  
  69.                 printf("\nCreando actor");
  70.  
  71.                 printf("\nNombre actor/iz: ");
  72.                 fflush(stdin);
  73.                 gets(actor->nombre);
  74.  
  75.                
  76.                 do{
  77.                     printf("\nEdad del actor/iz: ");
  78.                     fflush(stdin);
  79.                     scanf("%d", &actor->edad);
  80.                 }while(actor->edad<14 || actor->edad>90);
  81.  
  82.                 printf("\nSexo del actor/iz [H/M]: ");
  83.                 fflush(stdin);
  84.                 gets(actor->sexo);
  85.  
  86.                 int e = 0;
  87.                 for(e=0;e<5;e++){
  88.                     if(pelicula[pos].act[e].nombre != actor[i].nombre){
  89.                        
  90.                        
  91.                         return true;
  92.                    
  93.                 }else{
  94.                     printf("\nACTOR ENCONTRADO");
  95.                 }
  96.  
  97.             }
  98.         }
  99.     }
  100.     return false;
  101.  
  102. }
  103.  
  104. }
  105.  
  106.  
  107.  
  108.  
  109.  
  110. void cargar(struct peliculas *pelicula){
  111.     FILE *pelicula1;
  112.  
  113.     if((pelicula1=fopen("pelicula1.dat","rb"))!=NULL){
  114.         fread(pelicula,sizeof(struct peliculas),MAX,pelicula1);
  115.         fclose(pelicula1);
  116.     }
  117. }

Etiquetas: char, estructuras, funcion, int, programa, struct
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 10:10.