Problème 1 (W_ORDERED) 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. Solution en Pascal 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. Le jeu de tests pour l'évaluation Les 5 tests pour le programmes W_ORDERED (20 points par test) Test 1 4 126 entiers Test 2 2 36 entiers Test 3 7 36 entiers Test 4 5 126 entiers Test 5 9 donnée refusée par le programme
|