Sei sulla pagina 1di 10

#include <stdio.

h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define MAXPLAZAS 10

/*Para cada plaza se debe guardar: nombre de la persona que ocupa la plaza (m�ximo
40 caracteres), DNI, edad
en el momento de asistir al campamento, y sexo (V o H).*/
typedef struct plaza{
char nombre [14];
char DNI [9];
int edad;
char sexo;
}plaza;

//typedef listado plaza[MAXPLAZAS];

typedef struct campamento{


char clave[9];
char lugar[40];
char mes[20];
int turno;
int rangomin;
int rangomax;
float precio;
int plazas;
int plazasasignadas;
struct plaza listadoparticipantes[MAXPLAZAS];
char deporte1[20];
char deporte2[20];
}campamento;

int numerodecampamentos=0;

void menu1(){
printf("\n\n");
printf(" MENU PRINCIPAL\n\n");
printf(" 1- Alta de campamentos\n\n");
printf(" 2- Baja de campamentos\n\n");
printf(" 3- Modificacion de campamentos\n\n");
printf(" 4- Registro de participantes\n\n");
printf(" 5- Informes\n\n");
printf(" 0- Salir\n\n");
printf("\n\n\n Elija una opcion: ");
}

void menu2(){
printf("\n\n\n INFORMES");
printf("\n --------");
printf("\n\n");
printf(" MENU INFORMES\n\n");
printf(" 1- Listado General de Campamentos\n\n");
printf(" 2- Consulta de los datos de un Campamento\n\n");
printf(" 3- Consulta de los datos de un Participante\n\n");
printf(" 4- Listado por Deporte\n\n");
printf(" 5- Importes totales\n\n");
printf(" 6- Promedio de Plazas\n\n");
printf(" 0- Volver al menu principal\n\n");
printf("\n\n\n Elija una opcion: ");

int main()
{
campamento c; // creo una variable de tipo c
c.plazas=3;
c.precio=30;
int w=1;
char z;

campamento lista[7];
strcpy(lista[0].clave,"AHGT_25\0");
strcpy(lista[0].lugar,"AVILA");
strcpy(lista[0].mes,"JUNIO");
lista[0].plazas=5;
lista[0].plazasasignadas=0;
lista[0].precio=750;
lista[0].rangomax=12;
lista[0].rangomin=10;
lista[0].turno=1;
strcpy(lista[0].deporte1,"Vela");
strcpy(lista[0].deporte2,"Tenis");
numerodecampamentos++;

strcpy(lista[1].clave,"BNFG_56\0");
strcpy(lista[1].lugar,"SEGOVIA");
strcpy(lista[1].mes,"AGOSTO");
lista[1].plazas=8;
lista[1].plazasasignadas=0;
lista[1].precio=1250;
lista[1].rangomax=15;
lista[1].rangomin=14;
lista[1].turno=2;
strcpy(lista[1].deporte1,"Tenis");
strcpy(lista[1].deporte2,"Golf");
numerodecampamentos++;

strcpy(lista[2].clave,"HMYT_76\0");
strcpy(lista[2].lugar,"CANTABRIA");
strcpy(lista[2].mes,"JULIO");
lista[2].plazas=10;
lista[2].plazasasignadas=0;
lista[2].precio=890;
lista[2].rangomax=18;
lista[2].rangomin=16;
lista[2].turno=1;
strcpy(lista[2].deporte1,"Equitacion");
strcpy(lista[2].deporte2,"Golf");
numerodecampamentos++;
/*lista[0].turno
1 y 2 10-12
BNFG_56 Segovia Agosto 3 y 4 8 14-15 1250
HMYT_76 Noja � Cantabria Julio 1 y 2 10 16-18 890*/
lista[6].plazas=3;
int opcion1, opcion2;
int menu=2;
typedef struct campamento;
while (menu>1){
w=1;
menu1();

scanf("%d", &opcion1);

if (opcion1==1){

printf("\n\n\n ALTA DE CAMPAMENTOS");


printf("\n -------------------");
while (w==1){

printf("\n\n Por favor escriba la clave de campamento (7


digitos): ");
scanf("%s",&(c.clave));

// Aqui va recorriendo las letras que tiene la clave una a una


y las muestra por pantalla
for(int i=0;i<7;i++){
if (i<4){
if ((c.clave[i]<= 'Z')&&('A' <= c.clave[i])){

}
else {
printf(" FORMATO INVALIDO");
break;
}
}
if (i==4){
if (c.clave[i]<= '_'){

}
else {

printf(" FORMATO INVALIDO");


break;
}
}
if (i>4&&i<7){
if ((c.clave[i]<= '9')&&('0' <= c.clave[i])){

}
else {
printf(" FORMATO INVALIDO");
break;
}
}

}
// comprobar si ya existe dentro de la lista de campamentos esa
clave
w=0;

// COMPROBAMOS SI LA CLAVE EST� REPETIDA


for(int i=0;i<7;i++){

if(strcmp(c.clave,lista[i].clave)==0){
printf("\n\n CLAVE REPETIDA, ESCRIBE OTRA
DIFERENTE \n");
w=1;
break;
}

/*else {

break;

}*/
}

}
if(numerodecampamentos<7){
strcpy(&(lista[numerodecampamentos].clave),c.clave);
printf("\n\n CLAVE CORRECTA \n");
w=0;
printf("\n Escribe el LUGAR del campamento:");
scanf("%s",lista[numerodecampamentos].lugar);
printf("\n Escribe el MES del campamento:");
scanf("%s",lista[numerodecampamentos].mes);
printf("\n Escribe el TURNO (Semanas) del
campamento:");
scanf("%d",&lista[numerodecampamentos].turno);
printf("\n Escribe el numero de PLAZAS del
campamento:");
scanf("%d",&lista[numerodecampamentos].plazas);
lista[numerodecampamentos].plazasasignadas=0;
printf("\n Escribe el MINIMO de EDAD del
campamento:");
scanf("%d",&lista[numerodecampamentos].rangomin);
printf("\n Escribe el MAXIMO de EDAD del
campamento:");
scanf("%d",&lista[numerodecampamentos].rangomax);

printf("\n Escribe el DEPORTE1 del campamento:");


scanf("%s",lista[numerodecampamentos].deporte1);
printf("\n Escribe el DEPORTE2 del campamento:");
scanf("%s",lista[numerodecampamentos].deporte2);

printf("\n LOS DATOS SON CORRECTOS? (S/N) \n\n");


fflush(stdin);
scanf("%c", &z);
if ((z=='s') || (z=='S')){
printf("\n ALTA DE CAMPAMENTO COMPLETADA \n\n");
numerodecampamentos++;
}

if ((z=='n') || (z=='N')){

}
// introducimos el campamento en la lista
// si no existe incrementamos el numero de campamentos

}
if (opcion1==2){
printf("\n\n\n BAJA DE CAMPAMENTOS");
printf("\n -------------------");
printf("\n\n Por favor escriba la clave de campamento: ");
scanf("%s",&(c.clave));
int posicion=-1;
for(int i=0;i<numerodecampamentos;i++){
if(strcmp(lista[i].clave,c.clave)==0){
if(lista[i].plazasasignadas>0){
posicion=i;
}
}
}
//printf("posicion=%d",posicion);
// muevo desde donde la posicion donde est� la clave hacia la izda.
una posicion el resto de campamentos
for(int i=posicion;i<numerodecampamentos-1;i++){
strcpy(lista[i].clave,lista[i+1].clave);
strcpy(lista[i].lugar,lista[i+1].lugar);
strcpy(lista[i].mes,lista[i+1].mes);
lista[i].plazas=lista[i+1].plazas;
lista[i].precio=lista[i+1].precio;
lista[i].rangomax=lista[i+1].rangomax;
lista[i].rangomin=lista[i+1].rangomin;
}
numerodecampamentos--;
/*printf("numerodecampamentos=%d",numerodecampamentos);
for(int i=0;i<numerodecampamentos;i++){
printf("\n%s\t",lista[i].clave);
printf("%s\t",lista[i].lugar);
if(strlen(lista[i].lugar)<8){
printf("\t");
}
//printf("%d",strlen(lista[i].lugar));
printf("%s\t",lista[i].mes);
printf("%d\t",lista[i].plazas);
printf("%d\t",lista[i].precio);
printf("%d\t",lista[i].rangomax);
printf("%d\t",lista[i].rangomin);
}*/
if(posicion==-1){
printf("\n El campamento de clave %s no existe\n",c.clave);
}
else{
printf("\n El campamento de clave %s se ha
eliminado\n",c.clave);
}

if (opcion1==3){
printf("\n\n\n MODIFICACION DE CAMPAMENTOS");
printf("\n -------------------");
printf("\n\n Por favor escriba la clave de campamento: ");
scanf("%s",&(c.clave));
int posicion=-1;
for(int i=0;i<numerodecampamentos;i++){
if(strcmp(lista[i].clave,c.clave)==0){
posicion=i;
}
}

if(posicion==-1){
printf("\n El campamento de clave %s no existe\n",c.clave);

}
else{
printf("\n Escribe el LUGAR del campamento:");
scanf("%s",lista[posicion].lugar);
printf("\n Escribe el MES del campamento:");
scanf("%s",lista[posicion].mes);
printf("\n Escribe el TURNO (Semanas) del
campamento:");
scanf("%d",&lista[posicion].turno);
printf("\n Escribe el numero de PLAZAS del
campamento:");
scanf("%d",&lista[posicion].plazas);
lista[posicion].plazasasignadas=0;
printf("\n Escribe el MINIMO de EDAD del
campamento:");
scanf("%d",&lista[posicion].rangomin);
printf("\n Escribe el MAXIMO de EDAD del
campamento:");
scanf("%d",&lista[posicion].rangomax);

printf("\n LOS DATOS SON CORRECTOS? (S/N) \n\n");


fflush(stdin);
scanf("%c", &z);
}
for(int i=0;i<numerodecampamentos;i++){
printf("\n%s\t",lista[i].clave);
printf("%s\t",lista[i].lugar);
if(strlen(lista[i].lugar)<8){
printf("\t");
}
//printf("%d",strlen(lista[i].lugar));
printf("%s\t",lista[i].mes);
printf("%d\t",lista[i].plazas);
printf("%d\t",lista[i].precio);
printf("%d\t",lista[i].rangomax);
printf("%d\t",lista[i].rangomin);
}
}
if (opcion1==4){
printf("\n\n\n REGISTRO DE PARTICIPANTES");
printf("\n -------------------------");
printf("\n\n Escribe la clave de campamento: ");
scanf("%s",&(c.clave));
int posicion=-1;
for(int i=0;i<numerodecampamentos;i++){
if(strcmp(lista[i].clave,c.clave)==0){
posicion=i;
}
}
if(posicion==-1){
printf("\n El campamento de clave %s no existe\n",c.clave);
}
else{

if (lista[posicion].plazasasignadas<lista[posicion].plazas){
printf("\n Escribe el NOMBRE del participante:");

scanf("%s",lista[posicion].listadoparticipantes[lista[posicion].plazasasignadas].no
mbre);
printf("\n Escribe el DNI del participante (9 digitos):");

scanf("%s",lista[posicion].listadoparticipantes[lista[posicion].plazasasignadas].DN
I);
printf("\n Escribe el SEXO del participante (H/M):");

scanf("%c",&(lista[posicion].listadoparticipantes[lista[posicion].plazasasignadas].
sexo));

scanf("%c",&(lista[posicion].listadoparticipantes[lista[posicion].plazasasignadas].
sexo));
printf("\n Escribe el EDAD del participante:");

scanf("%d",&(lista[posicion].listadoparticipantes[lista[posicion].plazasasignadas].
edad));

lista[posicion].plazasasignadas++;
for(int i=0;i<lista[posicion].plazasasignadas;i++){
printf("\n NOMBRE del participante:");

printf("%s",lista[posicion].listadoparticipantes[i].nombre);
printf("\n DNI del participante (9 digitos):");

printf("%s",lista[posicion].listadoparticipantes[i].DNI);
printf("\n SEXO del participante (H/M):");
printf("%c",
(lista[posicion].listadoparticipantes[i].sexo));
printf("\n EDAD del participante:");
printf("%d",
(lista[posicion].listadoparticipantes[i].edad));
}

}
else{
printf("\n No hay plazas disponibles \n");
}
}

}
if (opcion1==5){
menu2();
scanf("%d", &opcion2);
printf("\n");

if (opcion2==1){

printf("\n Listado General de Campamentos \n");


printf("CLAVE\t");
printf("LUGAR\t\t");
printf("MES\t");
printf("PLAZAS\t");
printf("PRECIO\t");
printf("RANGO - MIN/MAX\t");

for(int i=0;i<numerodecampamentos;i++){
printf("\n%s\t",lista[i].clave);
printf("%s\t",lista[i].lugar);
if(strlen(lista[i].lugar)<8){
printf("\t");
}
//printf("%d",strlen(lista[i].lugar));
printf("%s\t",lista[i].mes);
printf("%d\t",lista[i].plazas);
printf("%d\t",lista[i].precio);
printf("%d\t",lista[i].rangomax);
printf("%d\t",lista[i].rangomin);
}

}
if (opcion2==2){

int posicion=-1;
printf("\n\n Escribe la clave de campamento: ");
scanf("%s",&(c.clave));

for(int i=0;i<numerodecampamentos;i++){
if(strcmp(lista[i].clave,c.clave)==0){
posicion=i;
}
}
if(posicion!=-1){

printf("CLAVE\t");
printf("LUGAR\t\t");
printf("MES\t");
printf("PLAZAS\t");
printf("PRECIO\t");
printf("RANGO - MIN/MAX\t");
int i=posicion;
printf("\n%s\t",lista[i].clave);
printf("%s\t",lista[i].lugar);
if(strlen(lista[i].lugar)<8){
printf("\t");
}
//printf("%d",strlen(lista[i].lugar));
printf("%s\t",lista[i].mes);
printf("%d\t",lista[i].plazas);
printf("%d\t",lista[i].precio);
printf("%d\t",lista[i].rangomax);
printf("%d\t",lista[i].rangomin);

}
else{
printf("\n La clave del departamento no existe \n");
}

}
if (opcion2==3){

}
if (opcion2==4){
char deporte[20];
printf("\n Introduce el deporte:");
scanf("%s",deporte);
printf("\n Listado por deporte %s \n",deporte);
printf("CLAVE\t");
printf("LUGAR\t\t");
printf("MES\t");
printf("PLAZAS\t");
printf("PRECIO\t");
printf("RANGO - MIN/MAX\t");
for(int i=0;i<numerodecampamentos;i++){
if(strcmp(lista[i].deporte1,deporte)==0||
strcmp(lista[i].deporte2,deporte)==0){
printf("\n%s\t",lista[i].clave);
printf("%s\t",lista[i].lugar);
if(strlen(lista[i].lugar)<8){
printf("\t");
}
//printf("%d",strlen(lista[i].lugar));
printf("%s\t",lista[i].mes);
printf("%d\t",lista[i].plazas);
printf("%d\t",lista[i].precio);
printf("%d\t",lista[i].rangomax);
printf("%d\t",lista[i].rangomin);
}
}

}
if (opcion2==5){
printf("\n Importes totales \n");
float importes=0;

printf("\n Listado General de Campamentos \n");


printf("CLAVE\t");
printf("PLAZAS\t");
printf("PRECIO\t");
printf("IMPORTE TOTAL DEL CAMPAMENTO\t");

for(int i=0;i<numerodecampamentos;i++){
printf("\n%s\t",lista[i].clave);
printf("%d\t",lista[i].plazas);
printf("%.2f\t",lista[i].precio);
printf("%.2f\t",(float)lista[i].plazas*lista[i].precio);
float x=(float)
(float)lista[i].plazas*(float)lista[i].precio;
importes=importes+((float)lista[i].plazas*lista[i].precio);
}

printf("\n El importe total es %.2f \n",importes);


}
if (opcion2==6){
printf("\n Promedio de plazas \n");
float plazas=0;

for(int i=0;i<numerodecampamentos;i++){
plazas=plazas+(float)lista[i].plazas;

}
printf("\n El promedio de plazas es %f \n",plazas/
(float)numerodecampamentos);
}
if (opcion2<=1||opcion2>6){
printf("\n Opcion incorrecta \n");
}

if (opcion1==0){
printf("\n\n GRACIAS POR UTILIZAR ESTE PROGRAMA\n\n");
exit(0);
}

if ((opcion1<0)||(opcion1>5)){
printf("\n\n LA OPCION %d NO ES VALIDA, POR FAVOR ESCRIBA OTRA: ",
opcion1);
}
}
}