Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - yaye

#1
hola, estoy con un programa de gestion deportiva, pero me he creado unos array como variables locales y me da error al compilar, quien me ayuda??


Código (cpp) [Seleccionar]

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//#define L_INSTALACION_DEPORTIVA 3

struct categoria_deportiva{
char identificador[3];
char nombre[40];
char descripcion[100];
int contador_instalaciones;
struct instalacion_deportiva array_instalacion[23];//[L_INSTALACION_DEPORTIVA];
};
struct socio{
int num;
char nombre[20];
char apellidos [30];
char dni [10];
char direccion[40];
int telefono;
};
struct  socio array_socios[50];
contador_socio=0;
struct reserva{
int numero_socio;
char identificador[6];
int dia;
char mes;
int hora_inicio;
int hora_final;

};

struct instalacion_deportiva{
char codigo[10];
char nombre[40];
char descripcion[100];
float dimensiones;
int telefono;
float precio;
char calle[100];
int numero[4];
char ciudad[20];
struct reserva array_reservas[30];
int contador_reservas=0;

};
struct categoria_Deportiva array_categorias[10];
contador_categorias=0;

int menu(void);
void alta_categoria(void);
int buscar_caracter(char[],char);
char* trozo_cadena(char[], int);
int borrar_categoria(struct categoria_deportiva[],int,char);
void alta_instalacion(void);
int borrar_instalacion(struct instalacion_deportiva[],int);
void alta_socio(void);
void borrar_socio(struct socio[],int);
void reserva(void);

int main  (void){

   int opcion, pos;

 
 
 

   while(1){
      opcion=menu();
  int clave_buscar;
  int contador_categorias=0;
  int
      switch (opcion){
          case 1:
              alta_categoria();
              printf("\n\n");
              break;
          case 2:
           
             pos=borrar_categoria( array_categorias,contador_categorias,clave_buscar);
           break;      


           case 3:
          alta_instalacion();
          printf("\n\n");
   break;

      case 4:
           pos=borrar_instalacion(array_instalacion,contador_instalaciones);
           break;
     

      case 5:
          alta_socio();
          printf("\n\n");
          break;
case 6:

break;
case 7:
alta_reserva();
printf("\n\n");
break;
case 8:
exit(0);
               printf("\n\nEl Programa ha terminado\n\n");
               break;



           default:
               printf("\nOpcion incorrecta, seleccione una opcion del listado.\n\n");
               break;
       }

   }    while (opcion != 8);

   return 0;




int menu(){
int opcion;
printf("opcion 1: dar de alta nueva catgoria\n");
printf("opcion 2: dar de baja una categoria\n");
printf("opcion 3: dar de alta nueva instalacion\n");
printf("opcion 4: dar de baja una instalacion\n");
printf("opcion 5: dar de alta un nuevo socio\n");
printf("opcion 6: dar de baja un socio\n");
printf("opcion 7: realizar una reserva\n");
printf("opcion 8: salir");

printf("elija una opcion");
scanf("%d",&opcion);
return opcion;
}

void alta_categoria(){//aqui pongo el nimbre de la estructura en la que tengo que trabajar y como la voy a llaar. ref de ref. bibliograficas y struct ref... que es el tipo que devuelve
  printf("\nintroduzca el identificador: ");
   fflush(stdin);
 gets(array_categorias[contador_categorias].identificador);
  printf("intoduzca el nombre: ");
   fflush(stdin);
  gets(array_categorias[contador_categorias].nombre);
  printf("introduzca la descricion: ");
   fflush(stdin);
  gets(array_categorias[contador_categorias].descripcion);
 
contador_categorias++;

}

int buscar_caracter(char* cadena,char caracter){
       for (int i=0;i<strlen(cadena);i++){
               if(cadena[i]==caracter){
                       return i;
               }
       }
       return -1;

}

char* trozo_cadena(char clave[], int pos){//me localiza el identificador numerico
       char* cad;
       int j=0;
       for(int i=pos; i<strlen(clave); i++){
             
                   break;
               cad[j]=clave[i];
               j++;

       }

       return cad;
}








int borrar_categoria(struct categoria_deportiva array_categria[], int contador_caegoria_dep, char *clave_buscar){
char clave_buscar[9];
int contador_instalaciones;
int contador_categoria_dep;
char respuesta;
         
           printf("introduzca el identificadorque quiere borrar:\n");
            fflush(stdin);
           gets(clave_buscar);//una vez que tengo guardada la clave que quiro buscar la coparo con las posiciones del array.
             
                   if(pos==-1){
                           printf("no se encuentra el identificador");
                   } else  {
                   if (array_categoria[pos].contador_instalaciones >0){
                                   fflush(stdin);
                                   printf("esta categoria tiene al menos una instalacion, desea borrarlo?(s/n)");
                                   scanf("%c",&respuesta);
                   }
                   else if(array_categoria_dep[pos].contador_instalaciones >0  ){
                    respuesta=='s';
                   }
                   
                   if(respuesta=='s'){
                   

                   




                           for(int i=pos;i<contador_categoria_dep-1;i++){//si se cumple la condicion de arriba lo borro con el codigo que viene a continuacion atrasando la posicion en el array
                   //la pisicion me la va a dar la i, asi que igualo j a la posicion que quiero buscar y j tiene que ser menor que el contador catalogo que es el maximo que tenemos en este mometo de elementos de total de caralogos
           //ahora lo que tengo que hacer una vez localizada la posocion es borrarlo y mover todos los elementos uno para atras.lo hago copiando a la siguiente posicion.
           

//array_categoria_dep[]
strcpy(array_categoria_dep[i].identificador,array_categoria_dep[i+1].identificacdor);//con esto copio campo a campo en la posicion siguiente
           strcpy(array_categoria_dep[i].nombre,array_categoria_dep[i+1].nombre);
           strcpy(array_categoria_dep[i].descripcion,array_categoria_dep[i+1].descripcion);
           array_categoria_dep[i].contador_instalaciones = array_categoria_dep[i+1].contador_instalaciones;
           for(int j=0;j<array_categoria_dep[i].contador_instalaciones;j++){//vaciar las instalaciones de la posicion j del categoria.
           strcpy(array_categoria_dep[i].array_instalaciones[j].codigo,"");//ponemos las "" por que estamos dejando la cadena vacia, es decir vamos a vaciar esa referencia y rellenerla con la siguiente
          strcpy(array_categoria_dep[i].array_instalaciones[j].nombre,"");
          strcpy(array_categoria_dep[i].array_instalaciones[j].descripcion,"");
           strcpy(array_categoria_dep[i].array_instalaciones[j].dimensiones,"");
           strcpy(array_categoria_dep[i].array_instalaciones[j].precio,"");
          array_categoria_dep[i].array_instalaciones[j].telefono=0;//vaciar la referencia, al ser un entero las ponemos a 0
           strcpy(array_categoria_dep[i].array_instalaciones[j].calle,"");
           strcpy(array_categoria_dep[i].array_instalaciones[j].ciudad,"");
           array_categoria_dep[i].array_instalaciones[j].numero=0;
}

         
   }

  for(int i=0; i<contador_categoria_dep; i++){
      if(strcmp( array_categoria_deportiva[i].identificador,clave_buscar)==0){//comparo la clave de cada posicion del catalogo con la clave que estamos buscando que es la clave_buscar.
           return i;//i es la posicion donde la he encontrado.
       }
  }

  return -1; // si no lo encuentro
}

void alta_instalacion(){//aqui pongo el nimbre de la estructura en la que tengo que trabajar y como la voy a llaar. ref de ref. bibliograficas y struct ref... que es el tipo que devuelve
  printf("introduzca el codigo: ");
   fflush(stdin);
 gets(array_instalacion[contador_instalaciones].codigo);
  printf("intoduzca el nombre: ");
   fflush(stdin);
  gets(array_instalacion[contador_instalaciones].nombre);
  printf("introduzca la descropcion: ");
   fflush(stdin);
  gets(array_instalacion[contador_instalaciones].descripcion);
  printf("introduzca la dimesion: ");
   fflush(stdin);
  gets("%f",&array_instalacion[contador_instalaciones].dimensiones);
  printf("introduzca el precio: ");
   fflush(stdin);
  gets(array_instalacion[contador_instalaciones].precio);
  printf("introduzca la calle ");
   fflush(stdin);
  gets(array_instalacion[contador_instalaciones].calle);
  fprintf("introduzca el numero");
  fflush(stdin);
  gets(array_instalacion[contador_instalaciones].numero);
  printf("introduzca la ciudad");
  fflush(stdin);
  gets(array_instalacion[contador_instalaciones].ciudad);

  contador_instalaciones++;

}



void borrar_instalacion(struct instalacion_deportiva array_instalaciones_deportivas[],int contador_instalaciones){
int pos;
   char *id;
   char clave_buscar[5];
   char *numero_cadena;//obtenemos el numero del identificador que nos interesa
   int numero_entero;//variable donde guardamos la conversion de esa cadena a numero entero.
   int  posicion_2;//calculamos la posicion que tiene el "-"
   printf("introduzca el identificador de la instalacoin de la que quiere borrar ");
    fflush(stdin);
  gets(clave_buscar);//una vez que tengo guardada la clave que quiro buscar la coparo con las posiciones del array.
         
   pos=buscar_caracter(clave_buscar,'_');
    if(pos==-1){
            printf("no se encuentra la instalacion");
    }
    else{


  // printf("POSICION: %d",pos);
   id=trozo_cadena(codigo,pos);//trozo de cadena  no se la longitud que va a tener y por eso lo almaceno en el puntero id
   //printf("\nCADENA: %s",id);
   for(int i=0;i<contador_instalacion;i++){
       if(strcmp(array_instalacion[i].codigo,id)==0){
       
               
                       numero_cadena=trozo_cadena(clave_buscar,pos);
                       //para pasarlo al numero entero
                       numero_entero=atoi(numero_cadena);

  //ahora vamos a resolver lo del numero de copias si tienes mas copias hay que borrarlas
                        if(array_categorias[pos].array_instalacion[numero_entero].reservas >0){
                        array_categorias[pos].array_instalacion[numero_entero].reservas--;//para restarle una copia
                        if(array_categorias[pos].array_instalacion[numero_entero].reservas==0){

                        strcpy(array_categorias[pos].array_instalacion[numero_entero].codigo,"");//ponemos las "" por que estamos dejando la cadena vacia, es decir vamos a vaciar esa referencia y rellenerla con la siguiente
strcpy(array_categorias[pos].array_instalacion[numero_entero].nombre,"");                        
                       strcpy(array_categorias[pos].array_instalacion[numero_entero].descripcion,"");
                       strcpy(array_categorias[pos].array_instalacion[numero_entero].calle,"");
                       strcpy(array_categorias[pos].array_instalacion[numero_entero].ciudad,"");
                       array_categorias[pos].array_instalacion[numero_entero].dimension =0;//vaciar la referencia, al ser un entero las ponemos a
array_categorias[pos].array_instalacion[numero_entero].precio =0;
array_categorias[pos].array_instalacion[numero_entero].telefono =0;
array_categorias[pos].array_instalacion[numero_entero].numero =0;

                        for(int m=numero_entero;m<array_categorias[pos].contador_instalaciones;m++){
                           //vamos trasladando una posicion posterior  una anterior y la empezamos desde la posicon borrada
                           strcpy(array_categorias[pos].array_instalaciones[m].codigo,array_categorias[pos+1].array_instalacion[m].codigo);
strcpy(array_categorias[pos].array_instalaciones[m].nombre,array_categorias[pos+1].array_instalacion[m].nombre);          
strcpy(array_categorias[pos].array_instalaciones[m].descripcion,array_categorias[pos+1].array_instalacion[m].descripcion);
strcpy(array_categorias[pos].array_instalaciones[m].calle,array_categorias[pos+1].array_instalacion[m].calle);
strcpy(array_categorias[pos].array_instalaciones[m].ciudad,array_categorias[pos+1].array_instalacion[m].ciudad);
array_categorias[pos].array_instalacion[m].dimension =array_categotias[pos+1].array_instalacion[m].dimension;
                          array_categorias[pos].array_instalacion[m].telefono =array_categotias[pos+1].array_instalacion[m].telefono;
                          array_categorias[pos].array_instalacion[m].precio =array_categotias[pos+1].array_instalacion[m].precio;
                          array_categorias[pos].array_instalacion[m].numero =array_categotias[pos+1].array_instalacion[m].numero;

                            array_categorias[pos].contador_instalaciones --;//le estamps restando una posicion.
                        }
                    }
               

            }
        }
       }
     
       }
   }


}



void alta_scio(){
int pos;
array_socios[contador_socios].num=contador_socios;
printf("introduzca el nombre del socio: \n");
fflush(stdin);
gets(array_socios[contador_socios].nombre);
printf("introduzca el apellido: \n");
fflush(stdin);
gets(array_socios[contador_socios].apellidos);
printf("introduzca el dni:\n");
fflush(stdin);
gets(array_socios[contador_socios].dni);
printf("introduzca la direccion");
fflush(stdin);
gets(array_socios[contador_socios].direccion);
printf("introduzc el telefono: \n");
fflush(stdin);
gets(array_socios[contador_socios].telefono);

contador_socios++;

}
int borra_socio(struct socio array_socios[],int contador_socio){
int pos;
printf("introduzca el numero de socio que quiere borrar: \n");
fflush(stdin);
gets(num);

for(int i=pos;i<contador_socio-1;i++){

strcpy(array_socio[pos].nombre,array_socio[pos+1].nombre);
strcpy(array_socio[pos].apellidos,array_socio[pos+1].apellidos);
strcpy(array_socio[pos].dni,array_socio[pos+1].dni);
strcpy(array_socio[pos].direccion,array_socio[pos+1].direccion);
array_socio[pos].telefono =array_socio[pos+1].telefono;
for(int j=0;j<contador_socio;j++){
strcpy(array_socios[i].nombre,"");
strcpy(array_socios[i].apellidos,"");
strcpy(array_socios[i].dni,"");
strcpy(array_socios[i].direccion,"");
array_socios[i].telefono=0;

}

contador_instalaciones --;


}    


void reservas(){

printf("a que categoria pertenece la reserva que quiere realizar: \n");
fflush(stdin);
gets(array_categorias)

pritf("de que instalacion quiere realizar la reserva: \n")
fflush(stdin);
gets(array_instalacion);
printf("introduzca el numero de socio que va a realizar la reserva: \n");
fflush(stdin);
gets(array_reservas[contador_reservas].num_socio);
printf("introduzca el identificador: \n");
fflush(stdin);
gets(array_reservas[contador_reservas].identificador);
printf("introduzca el dia de la reserva: \n");
fflush(stdin);
gets(array_reservas[contador_reservas].dia);
printf("introduzca el mes de la reserva: \n");
fflush(stdin);
gets(array_reservas[contador_reservas].mes);
printf("introduzca la hora de inicio: \n");
fflush(stdin);
gets(array_reservas[contador_reservas].hora_inicio);
printf("introduzca la hora de fin: \n");
fflush(stdin);
gets(array_reservas[contador_reservas].hora_final);
contador_reservas++;

}