Bookmark and Share

Liens sponsorisés

Well Ordered Print E-mail
Written by Administrator   
Saturday, 15 March 2008 15:59

Source : Olympiades Tunisiennes d'Informatique, TOI 2003

Un entier de n chiffres (1<n<9) est dit bien ordonné si ses chiffres forment, de gauche à droite, une suite strictement croissante.

Exemple :

L'entier de trois chiffres, 147 est bien ordonné car 1<4<7.

L'entier de 4 chiffres, 1265 n'est pas bien ordonné car 6>5.

Écrire un programme qui saisit un entier n  (1<n<9) et fait sortir tous les entiers bien ordonnés de n chiffres et le nombre total de ces entiers.

 

 

Correction

PROGRAM WELL_ORDERED;

USES wincrt;

VAR       n   : INTEGER;

      i,mn,mx,p : LONGINT;

PROCEDURE min_max(n:integer; VAR min,max:LONGINT);

VAR i : INTEGER;

BEGIN

  min:=0;

  max:=0;

  FOR i:=1 to n do

            BEGIN

              min:=10*min + i;

              max:=10*max + (9-n+i);

            END;

END;

FUNCTION w_ordered(m:LONGINT):BOOLEAN;

VAR i,c1,c2 :INTEGER;

     valide :BOOLEAN;

BEGIN

   IF m<10 THEN

      BEGIN

             w_ordered:=TRUE

      END

   ELSE

            BEGIN

               REPEAT

                        c1:=m MOD 10;

                        m:= m DIV 10;

                        c2:= m MOD 10;

                        valide :=(c1>c2);

               UNTIL NOT(valide) OR (m<10);

               w_ordered:=valide;

            END;

END;

PROCEDURE saisie(VAR m:integer);

BEGIN

            REPEAT

               WRITE('Donner un entier n compris entre 1et 9 : ');READLN(m);

            UNTIL m in [2..8];

END;

BEGIN

    saisie(n);

    min_max(n,mn,mx);

    p:=0;

    FOR i:=mn to mx DO

            BEGIN

               IF w_ordered(i) THEN

                  BEGIN

                        p:=p+1;

                        writeln(p:10,' - ',i);

                  END;

            END;

END.

 

 

 

Liens sponsorisés