Curso-lenguaje-C/curso-juantxi/Ejercicios/1202Garaje.c

243 lines
6.8 KiB
C
Raw Permalink Normal View History

2022-09-01 18:40:17 +02:00
#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!");
}