#include <stdio.
h>
#include <stdlib.h>
#include <string.h>
#define MAX_PLAZAS 100
#define MAX_MATRICULA 8
typedef struct {
char matricula[MAX_MATRICULA];
int hora_entrada;
int minuto_entrada;
float tarifa;
} Vehiculo;
void inicializar_parking(Vehiculo parking[]);
int entrada_vehiculo(Vehiculo parking[]);
int consulta_vehiculo(Vehiculo parking[]);
int salida_vehiculo(Vehiculo parking[]);
void mostrar_ocupacion(Vehiculo parking[]);
int main() {
Vehiculo parking[MAX_PLAZAS];
int opcion;
inicializar_parking(parking);
do {
printf("\n\n");
printf("1. Entrada de un vehículo\n");
printf("2. Consulta de un vehículo\n");
printf("3. Salida de un vehículo\n");
printf("4. Mostrar ocupación\n");
printf("5. Salir\n");
printf("Introduce una opción (1-5): ");
scanf("%d", &opcion);
switch(opcion) {
case 1:
entrada_vehiculo(parking);
break;
case 2:
consulta_vehiculo(parking);
break;
case 3:
salida_vehiculo(parking);
break;
case 4:
mostrar_ocupacion(parking);
break;
case 5:
printf("Saliendo del programa...\n");
break;
default:
printf("Opción no válida. Inténtalo de nuevo.\n");
}
} while(opcion != 5);
return 0;
}
void inicializar_parking(Vehiculo parking[]) {
int i;
for(i = 1; i <= MAX_PLAZAS; i++) {
strcpy(parking[i].matricula, "");
}
}
int entrada_vehiculo(Vehiculo parking[]) {
int i, hora, minuto;
float tarifa;
char matricula[MAX_MATRICULA];
for(i = 1; i <= MAX_PLAZAS; i++) {
if(strcmp(parking[i].matricula, "") == 0) {
printf("Introduce la matrícula del vehículo: ");
scanf("%s", matricula);
printf("Introduce la hora actual (formato 24 horas): ");
scanf("%d", &hora);
printf("Introduce los minutos actuales: ");
scanf("%d", &minuto);
printf("Introduce la tarifa por minuto a aplicar: ");
scanf("%f", &tarifa);
if(strlen(matricula) != 7) {
printf("La matrícula introducida no es válida.\n");
return 0;
}
for(int j = 1; j <= MAX_PLAZAS; j++) {
if(strcmp(parking[j].matricula, matricula) == 0) {
printf("Ya hay un vehículo con esa matrícula en el parking.\
n");
return 0;
}
}
strcpy(parking[i].matricula, matricula);
parking[i].hora_entrada = hora;
parking[i].minuto_entrada = minuto;
parking[i].tarifa = tarifa;
printf("El vehículo ha sido introducido en la plaza %d.\n", i);
return 1;
}
}
printf("El parking está lleno. No se puede introducir el vehículo.\n");
return 0;
}
int consulta_vehiculo(Vehiculo parking[]) {
int i;
char matricula[MAX_MATRICULA];
printf("Introduce la matrícula del vehículo: ");
scanf("%s", matricula);
for(i = 1; i <= MAX_PLAZAS; i++) {
if(strcmp(parking[i].matricula, matricula) == 0) {
printf("El vehículo con matrícula %s está en la plaza %d desde las %d:
%d.\n", parking[i].matricula, i, parking[i].hora_entrada,
parking[i].minuto_entrada);
return 1;
}
}
printf("No se ha encontrado ningún vehículo con esa matrícula.\n");
return 0;
}
int salida_vehiculo(Vehiculo parking[]) {
int i, hora_salida, minuto_salida;
char matricula[MAX_MATRICULA];
printf("Introduce la matrícula del vehículo: ");
scanf("%s", matricula);
for(i = 1; i <= MAX_PLAZAS; i++) {
if(strcmp(parking[i].matricula, matricula) == 0) {
printf("Introduce la hora de salida (formato 24 horas): ");
scanf("%d", &hora_salida);
printf("Introduce los minutos de salida: ");
scanf("%d", &minuto_salida);
if(hora_salida < parking[i].hora_entrada || (hora_salida ==
parking[i].hora_entrada && minuto_salida <= parking[i].minuto_entrada)) {
printf("La hora de salida no es válida.\n");
return 0;
}
int tiempo_estancia = (hora_salida - parking[i].hora_entrada) * 60 +
(minuto_salida - parking[i].minuto_entrada);
float costo_estancia = tiempo_estancia * parking[i].tarifa / 60;
printf("El vehículo ha estado estacionado durante %d minutos. El costo
de la estancia es de %.2f euros.\n", tiempo_estancia, costo_estancia);
strcpy(parking[i].matricula, "");
return 1;
}
}
printf("No se ha encontrado ningún vehículo con esa matrícula.\n");
return 0;
}void mostrar_ocupacion(Vehiculo parking[]) {
int i, contador = 0;
for(i = 1; i <= MAX_PLAZAS; i++) {
if(strcmp(parking[i].matricula, "") != 0) {
printf("Plaza %d: %s\t", i, parking[i].matricula);
}
contador++;
if(contador == 10) {
printf("\n");
contador = 0;
}
}
printf("\n");
}