Old stuff/ecole_etude_fac_de_pau/licence_3/genie-logiciel/parking.c
(Deskargatu)
#include "parking.h"
void initialiser(parking *p)
{
printf("*** Vehicules vide ***\n");
int i;
p->nb=0;
for(i=0;i<1200;i++)
{
(p->vehicules)[i] = NULL;
}
}
void se_garer(parking *p,vehicule** v)
{
if (autoriser(p))
{
p->nb++;
int i=0;
while(p->vehicules[i] != NULL)
{
i++;
}
printf("-> vehicule ocupe la place %d\n",i);
p->vehicules[i] = *v;
}
else
{
perror("se garer sans autoriser");
exit(-1);
}
}
void quitter(parking *p,vehicule** v)
{
if (p->nb==0) { perror("pas de vehicules dans la parking"); exit(-1); }
int i=0;
while (i<1200 && p->vehicules[i] != *v)
{
i++;
}
if (i>=1200) { write(stderr,"vehicule absent"); exit(-1); }
printf("<- vehicule libere la place %d\n",i);
p->vehicules[i] = NULL;
p->nb--;
}
int autoriser(parking p)
{
return p.nb<1200;
}
int occupe(parking *p,place* pl)
{
int i=0;
while((i<1200) && (&(*p).places[i] != pl))
{
i++;
}
if (p->vehicules[i] != NULL) { printf("*** vehicule present en %d ***\n",i); }
return p->vehicules[i] != NULL;
}
int places_occupees(parking* p,place* liste)
{
int i=0;
int indice=0;
liste = malloc(1200* sizeof(place));
while(i<1200)
{
if (p->vehicules[i]!=NULL)
{
memcpy(&p->places[i],&liste[indice],sizeof(place));
indice++;
}
i++;
}
realloc(liste,indice*sizeof(place));
return indice;
}
place* quelle_place(parking* p,vehicule** v)
{
int i=0;
while(i<1200 && p->vehicules[i]!=*v)
{
i++;
}
if (i<1200) {
printf("Trouve le vehicule en place %d\n",i);
return &(p->places[i]);
}
return NULL;
}