La Marine Nationale a décidé d'effectuer des simulations de ses
prochaines grandes manoeuvres, et a pour cela décidé après mûre
reflexion de faire appel à vos services. Vous recevez le cahier des
charges ci-dessous.
Les manoeuvre mettront en jeu des portes-avions et des avions. Un
porte-avion sera modélisé par un processus indépendant, ne partageant
donc pas de mémoire avec les autres portes-avions.
Un porte avion n'a qu'une seule piste d'atterrissage et de décollage. Cette piste ne peut accepter qu'un seul avion à la fois. Les avions sortent du hangar (où ils ont fait le plein), et ils attendent à l'extérieur pour décoller que la piste soit libre. On considère pour simplifier que les hangars ont une capacité infini. Les avions arrivent en provenance d'un autre porte-avion et ils tournent autour du porte-avion en attendant que la piste se libère pour pouvoir atterrir. Les limites suivantes sont fixées :
La modélisation de ce qui se passe dans un porte-avion se fera sous forme de threads.
Quelles sont les possibilités qui s'offrent à vous pour effectuer le transfert d'un avion depuis un des portes-avions vers un autre portes-avions? Choisissez, après justification, une de ces possibilités. Notez que le choix du porte-avion d'arrivée est aléatoire.
Les avions ont une capacité limité en essence. Vous pouvez considérer qu'ils ont tous la même quantité d'essence au départ, mais que lorsqu'ils arrivent auprès du porte-avion où ils doivent atterrir, ils ont perdu une partie aléatoire de leur fuel (correspondant aux maneouvres effectuées). De plus, à chaque tour qu'ils passent en l'air, ils perdent une partie fixe de leur essence. Lorsque le niveau d'essence d'un des avions est trop bas (inférieur à un seuil fixé), l'avion demande à atterrir prioritairement. Un seul avion par tour peut atterrir prioritairement, mais plusieurs peuvent demander à atterrir en urgence.
Concevez un gestionnaire de type "ligne de commande", qui prendra comme paramètres