No me lee las variables globales. Ni struct instalacion_deportiva array_instalacion[23];//[L_INSTALACION_DEPORTIVA];
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ú
#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++;
}