243 lines
6.8 KiB
C
243 lines
6.8 KiB
C
|
#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!");
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|