Programation pascal

Bonjour,
AIDEZ MOA !!!
élaboré ... intitulé VERIF-DATE qui permet de vérifier si une date saisi a partir du clavier sous forme JJ-MM-AA est correct ou non .

le programme doit afficher le message :

« la date JJ-MM-AA est correct « si la date est correct .

« la date JJ-MM-AA n’est correct « si la date n’est pa corect

Exp :

Date saisi 10-20-2003 le message afficher est : n’est correct.

Date saisi 10-01-2003 le message afficher est : correct .
Configuration: Windows XP
Firefox 2.0.0.20

2 réponses

  1. Modérateur
    Déjà si ton format d'année est AA, 2003 ne devrait pas être valide.
    Ensuite ton problème se résout avec quelques conditions "if" ou "case of"
    1. Modérateur
      Voici une proposition de code, je pense avoir traité tous les cas de saisies incorrectes.
      program loujaine221;
      
      function verifDate(s:string):boolean;
      var boolJ,boolM,boolA:boolean; intJ,intM,intA,errJ,errM,errA:integer;
      begin
      
      if (length(s)=8) and (s[3]='-') and (s[6]='-')
         then begin
              val(copy(s,1,2),intJ,errJ);
              val(copy(s,4,2),intM,errM);
              val(copy(s,7,2),intA,errA);
              end
         else begin
              writeln('La date "',s,'" n''est pas correcte');
              writeln('La date doit etre sous la forme JJ-MM-AA');
              result:=false;
              exit;
         end;
      
      if (errJ=0) and (errM=0) and (errA=0) // JJ
         then begin
              boolJ:=(intJ>=1) and (intJ<=31);
              boolM:=(intM>=1) and (intM<=12);
              boolA:=(intA>=0) and (intA<=99); // toujours vrai puisque errA=0
              end
         else begin                         
              writeln('La date "',s,'" n''est pas correcte');
              writeln('JJ, MM, et AA doivent etre des entiers valides');
              result:=false;
              exit;
              end;
      
      if boolJ and boolM and boolA
         then begin
              case intM of
                   1,3,5,7,8,10,12: result:=(intJ<=31); // toujours vrai puisque boolJ
                   2: result:=(intJ<=29) and ((intA mod 4=0) or (intJ<>29));
                   4,6,9,11: result:=(intJ<=30);
                   end;
              end
         else result:=false;
      
      if result then writeln('La date "',s,'" est correcte')
                else begin
                     writeln('La date "',s,'" n''est pas correcte');
                     writeln('JJ, MM, et AA ne peuvent pas etre quelconques');
                     end;
      end;
      
      //////////////////////////////////////////////////////////
      
      var date:string;
      begin
      
      while true do
            begin
            write('Entrez une date au format JJ-MM-AA : ');
            readln(date);
            verifDate(date);
            writeln;
            end;
      
      end.