1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| program ajoutReservation;
const MAX=100;
type tabReservations=array [1..MAX,1..MAX] of string;
var reservation : tabReservations;
sejourClient : string;
i, j: integer;
{ça permet de donner en sortie la date d'arrivee du client depuis la forme 'aaaammjj au aaaammjj' du tableau}
function formatArrivee(date : string):longint;
var
i, er : integer;
arrivee : longint;
motArrivee : string;
begin
arrivee:=0;
motArrivee:='';
for i:=1 to 8 do
motArrivee:=motArrivee + date[i];
val(motArrivee,arrivee,er);
formatArrivee:=arrivee;
end;
{ça permet de donner en sortie la date de départ du client depuis la forme 'aaaammjj au aaaammjj' du tableau}
function formatDepart(date : string):longint;
var
i, er : integer;
depart : longint;
motDepart : string;
begin
depart:=0;
motDepart:='';
for i:=13 to 20 do
motDepart:=motDepart + date[i];
val(motDepart,depart,er);
formatDepart:=depart;
end;
{c'est le comparateur de dates pour voir si une chambre est disponible à la date demandée par le client}
function disponibiliteSejour(aClient, dClient : longint; chambre, sejour: integer): boolean;
var
reservation : tabReservations;
begin
disponibiliteSejour:=false;
if (aClient > formatArrivee(reservation[chambre][sejour])) and (dClient > formatDepart(reservation[chambre][sejour])) then
disponibiliteSejour:=true;
if (aClient < formatArrivee(reservation[chambre][sejour])) and (dClient < formatArrivee(reservation[chambre][sejour])) then
disponibiliteSejour:=true;
if (aClient > formatArrivee(reservation[chambre][sejour])) and (aClient > formatDepart(reservation[i][j])) then
disponibiliteSejour:=true;
end;
{ça permet de rajouter les réservations valides dans le tableau de 2 dimensions}
procedure ajoutReservation(reservation :tabReservations; sejourClient : string);
var i,j,k,l :integer;
begin
for i:=1 to MAX do
reservation[i][1]:='20130202 au 20130605';
k:=1;
l:=1;
writeln('Veuillez indiquer la date de réservation de la forme aaaammjj');
writeln('au aaammjj du client');
readln(sejourClient);
repeat
begin
for i:=1 to MAX do
begin
for j:=1 to MAX do
begin
while disponibiliteSejour(formatArrivee(sejourClient), formatDepart(sejourClient), i, j)=false do
k:=k+1;
if(k > MAX) then
begin
writeln('Toutes les chambres sont occupées à la date demandée, choisissez une autre date svp');
readln(sejourClient);
end;
end;
end;
end;
until (k < MAX) ;
for j:=1 to MAX do
begin
while reservation[k][j]<>'' do
l:=l+1;
end;
reservation[k][l]:=sejourClient;
end;
begin
ajoutReservation(reservation, sejourClient);
for i:=1 to MAX do
begin
for j:=1 to MAX do
writeln(reservation[i][j]);
end;
end. |
Partager