Programation pascal

loujaine221 Messages postés 6 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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"
    0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    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.
    0