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!");
|
||
|
||
|
||
|
||
} |