Tfe

Ongi etorri tfe-ren webgunera...

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)
  {
    printf("test ++ %d %d\n",p->vehicules[i],v);
    i++;
  }
  if (i<1200) {
    printf("Trouve le vehicule en place %d\n",i);
  }
    return &(p->places[i]);
}