#include
typedef struct
{
int dia, mes;
} t_fecha;
typedef struct
{
int codigo;
char titulo[31];
t_fecha fecha;
int aforo, reservas;
} t_evento;
void cargarFicheroEventos(t_evento v[])
{
int i, cod;
t_evento aux;
FILE *fp;
for (i = 0; i < 50; i++)
v[i].codigo = -1;
if ((fp = fopen("eventos.txt", "r")) == NULL) {
printf("Error en apertura de fichero de eventos");
} else {
while (fscanf(fp, "%d ", &cod) == 1) {
aux.codigo = cod - 1;
fscanf(fp, "%s %d %d %d\n", aux.titulo, &aux.fecha.dia,
&aux.fecha.mes, &aux.aforo);
aux.reservas = 0;
if (cod >= 1 && cod <= 50)
v[cod - 1] = aux;
}
if (fclose(fp) == 1)
printf("Error en cierre de fichero");
}
}
int confirmarReservas(t_evento v[])
{
FILE *fp;
char meses[] = "EFMAYJLGSOND";
int num, codigo, cont = 0;
if ((fp = fopen("reservas.txt", "r")) == NULL) {
printf("Error en apertura de fichero de reservas");
return -1;
} else {
while (fscanf(fp, "%d %d", &codigo, &num) != EOF) {
if (codigo >= 1 && codigo <= 50 && v[codigo - 1].codigo != -1 &&
(v[codigo - 1].reservas) + num <= v[codigo - 1].aforo) {
v[codigo - 1].reservas += num;
printf("\nConfirmada la reserva: %s %d plazas %d-%c",
v[codigo - 1].titulo, num, v[codigo - 1].fecha.dia,
meses[v[codigo - 1].fecha.mes - 1]);
cont++;
}
}
if (fclose(fp) == 1)
printf("Error en cierre de fichero");
return cont;
}
}
void mostrarEventosMes(t_evento v[], int mes)
{
char meses[] = "EFMAYJLGSOND";
int i;
printf("\n\nEventos del mes de %c:", meses[mes - 1]);
printf("\n======================");
for (i = 0; i < 50; i++)
if (v[i].codigo != -1 && v[i].fecha.mes == mes)
printf("\n%-30s Dia: %4d Aforo:%4d Plazas reservadas: %d",
v[i].titulo, v[i].fecha.dia, v[i].aforo, v[i].reservas);
}
void plazasLibresPorMes(t_evento v[], int vLibres[])
{
int i;
for (i = 0; i < 12; i++)
vLibres[i] = 0;
for (i = 0; i < 50; i++)
if (v[i].codigo != -1)
vLibres[(v[i].fecha.mes) - 1] += v[i].aforo - v[i].reservas;
}
int main()
{
t_evento vEventos[50];
int vLibres[12];
int i;
cargarFicheroEventos(vEventos);
confirmarReservas(vEventos);
plazasLibresPorMes(vEventos, vLibres);
for (i = 1; i <= 12; i++) {
mostrarEventosMes(vEventos, i);
printf("\nPlazas libres este mes: %d", vLibres[i - 1]);
}
getch();
return 1;
}