[PASCAL] agenda de réservation pour un hôtel
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

[PASCAL] agenda de réservation pour un hôtel



  1. #1
    dalfred

    [PASCAL] agenda de réservation pour un hôtel


    ------

    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:
    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.

    -----

  2. #2
    dalfred

    Re : [PASCAL] agenda de réservation pour un hôtel

    De l'aide s'il vous plait, je ne vois pas ou est l erreur de raisonnement

  3. #3
    whoami

    Re : [PASCAL] agenda de réservation pour un hôtel

    Bonjour,

    Une présentation correcte du code, permettant une lecture plus facile, aiderait à obtenir des réponses.

    Mais déjà quand je vois une procédure ajoutReservation porter le même nom que le programme, je fuis.

  4. #4
    dalfred

    Re : [PASCAL] agenda de réservation pour un hôtel

    Merci de votre aide, j'apprécie beaucoup.

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Reservation pour chape
    Par invite3e29d349 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 7
    Dernier message: 31/01/2011, 15h17
  2. programme informatique pour résoudre f(x)=0 (langage pascal)
    Par inviteb71d221c dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 21/05/2009, 15h43
  3. [Brun] mode hotel pour THOMSON 14MK15FT
    Par invite4c697cc6 dans le forum Dépannage
    Réponses: 0
    Dernier message: 11/09/2007, 22h03
  4. demande pour un programme en turbo pascal
    Par invite639c83a3 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 11/12/2006, 14h17
  5. Logiciel pour faire agenda en papier
    Par invite255c8b42 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 31/08/2006, 04h37