Programation pascal

Fermé
loujaine221 Messages postés 6 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 12 août 2009 - 12 août 2009 à 15:55
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 12 août 2009 à 17:30
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 .
A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
12 août 2009 à 16:07
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
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
12 août 2009 à 17:30
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