#include<stdio.h>
#include<stdlib.h> 


/*
Programa que permita gestionar los coches de un garaje. 
Cada plaza tiene un número del 0 al 44. 
Para cada coche que se guarda en el garaje almacena:
 - Matrícula cadena 10
 - Modelo cadena 30
 - Nombre conductor – cadena 60
 - Fecha de entrada en el garaje  día mes y año. Todo números enteros.

El programa mostrará el menú
 1 Meter coche. Comprobando que el garaje no está lleno.
 2 Mostrar la información del garaje
 3 Pedir una matrícula al usuario e indicar si ese coche está o no en el garaje.
 0 Salir

*/

#define TAM 45

// estructura de la fecha de entrada
struct fecha {
    int dia;
    int mes;
    int year;
};

//estructura de la plaza de garaje
struct plaza {
        int estado;  // 0 cuando la plaza está vacía y 1 cuando está ocupada
        char matricula[10];
        char modelo[30];
		char nomConductor[60];
		struct fecha fechaEntrada;
};

int main (){
	
    // Defino variables
    int menu;
    int numPlaza;
    int i;
    int ocupado=0;
    int libre=0;
    char buscarMatr[10];
    int encontrado;


	// tipo nombre [Tamaño]
	struct plaza garaje [TAM];


    // Dejo el estado de las plazas de garaje a 0 (Vacías)
    for(i=0; i<TAM; i++){
        garaje[i].estado=0;
    }

    //elabora un menú con estas opciones: 1. cargar 2. mostrar 0 . salir


    do{

        printf("\nMenú");
        printf("\n1 Introducir un coche."); // Comprobar que el garaje no está lleno
        printf("\n2 Mostrar información de las plazas.");
        printf("\n3 Introduce una matrícula para saber si está el coche en el garaje.");
        printf("\n0 Salir\n");

        printf("\nIntroduce una opción reseñada: ");
        fflush(stdin);
        scanf("%d", &menu);

        switch(menu){
            case 1:

                /*        
                // Cuento las plazas libres y ocupadas.
                for(i=0; i<TAM; i++){
                    if(garaje[i].estado==0){
                        libre=libre+1;
                    }else{
                        ocupado=ocupado+1;
                    }
                }

                if(libre==0){
                    printf("\nEL GARAJE ESTA COMPLETO.");
                    printf("\nVuelva más tarde.");

                }else{
                      
                    printf("\nTenemos libres las siguientes plazas: \n");
                    
                    for(i=0; i<TAM; i++){

                        if(garaje[i].estado==0){
                            printf("%d \t", i);
                        }
                        if(i==14||i==29||i==44){
                            printf("\n");
                        }

                    }  

                    printf("\n¿Qué plaza desea reservar?: \n");
                    // //////////////////////////////// ME HE QUEDADO AQUí
                    // scanf .....


                }*/

            /*Solucion sencilla*/
            ocupado=0;
            for(i=0;i<TAM;i++){
                if(garaje[i].estado==1){
                    ocupado++;
                }
            }

            if(ocupado==TAM){
                printf("\nEste garaje estA completo");
            }else{
                libre=0;
                while(garaje[libre].estado==1){
                    libre++;
                }
                printf("\n Introduce la matricula del coche:  ");
                fflush(stdin);
                scanf("%s", garaje[libre].matricula);

                garaje[libre].estado=1;

                //y así, con el resto de los datos
            }


                break;
            case 2: // Mostrar las plazas vacías y las plazas ocupadas

                printf("\n####################");
                printf("\nOCUPACIÓN DEL GARAJE");
                printf("\n####################\n");

                // Cuento las plazas libres y ocupadas.
                /*
                for(i=0; i<TAM; i++){
                    if(garaje[i].estado==0){
                        libre=libre+1;
                    }else{
                        ocupado=ocupado+1;
                    }
                }
                printf("\nEn estos momentos de las %d plazas que disponemos en nuestro garaje tenemos: ", TAM);
                printf("\n %d plazas libre y %d plazas ocupadas.\n", libre, ocupado);

                // Indico las plazas concretas y su estado.

                printf("\n_____________________________________ \n");
                printf("\nTenemos libres las siguientes plazas: \n");
                
                for(i=0; i<TAM; i++){

                    if(garaje[i].estado==0){
                        printf("%d \t", i);
                    }
                    if(i==14||i==29||i==44){
                        printf("\n");
                    }

                }

                printf("\n_____________________________________ \n");
                */

                /*Mostrar la información de las plazas*/
                libre=0;
                ocupado=0;
                for(i=0; i<TAM; i++){
                    if(garaje[i].estado==0){
                        printf("\nPlaza %d -> libre", i);
                        libre++;
                    }else{
                        printf("\nPlaza %d -< ocupada matricula: %s, modelo: %s", i, garaje[i].matricula, garaje[i].modelo);
                        ocupado++;
                    }
                }
                printf("\nLibres: %d Ocupadas: %d", libre, ocupado);

                break;
            case 3:
                //primero, pide la matrícula que la guardarás en una variable cualquiera (una cadena)

                printf("\nDame la matrícula a buscar: ");
                fflush(stdin);
                scanf("%s", buscarMatr);

                //recorre todo el garaje, comprueba que el estado es 1 y si el estado es 1, compara las matriculas
                //recuerda que las cadenas se comparan con strcmp

                //puedes valerte de un flag para indicar si has encontrado o no el coche.
                
                encontrado=0;
                for(i=0; i<TAM; i++){
                    
                    if(garaje[i].estado==1){
                        if(strcmp(buscarMatr, garaje[i].matricula)==0){
                            printf("\nLo encontre!! es un %s", garaje[i].modelo);
                            encontrado=1;
                        }

                                           
                    }

                }

                if(encontrado==0){
                    printf("\nEse coche con esa matricula no esta en el garaje");
                }


                break;
            case 0:

                
                break;

            // ERROR EN EL MENÚ 
            default:
                printf("\nNo es un valor correcto para este menu.\nVuelva a intentarlo\n\n");
        }

    }while ( menu != 0 );

    return 0;

    printf("Hasta pronto!");



}