Bonjour,
Je veux faire un programme qui permet de faire une sorte d'agenda de réservations de chambres dans un hôtel sous forme de tableaux à 2 dimensions (1ère dimension : numéro de chambre, 2ème dimension : les intervalles de temps réservées pour une chambre). J'ai fait un programme qui vérifie que l'intervalle de temps (2 dates) demandé par un client est différent des réservations déjà marquées dans l'agenda. Dans le cas où la chambre est bien disponible à la date demandée par le client, ça doit le marquer dans le tableau sinon le programme doit demander une nouvelle saisie de dates. J'ai fait exprès de faire un tableau de string avec des intervalles indiqués dans la forme 'aaaammjj au aaaammjj' pour pouvoir comparer plus facilement les dates entre elles. Enfin, j'aimerai qu'à chaque ajout d'une réservation, le programme affiche le contenu entier de l'agenda.
Le code que j'ai fait est bien compilé sur Geany mais à l'exécution ça fait rien à par la 1ère saisie de date du client.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.