|
Programme
W_ORDERED, solution du lauréat : Sami OUANNES
program w_ordered;
uses wincrt;
type chaine=string[9];
var n:integer;
function estbienord(a:LongInt):boolean;
var ch:chaine; f:boolean; i:integer;
begin
str(a,ch);
i:=0;
repeat
Inc(i);
if CH[i]< ch[i+1] then f:=true else f:=false;
until (i=length(CH)-1) or (f=false);
estbienord:=f;
end;
procedure saisie(var
aa:integer);
begin
repeat Writeln('Donner n tel que 1<n<9',#10#13,
'n étant le nombre de chiffres des entiers à traiter');
Readln(n); until n in[2..8];
end;
function min(b:integer):longint;
var m:longint; c,ch:chaine; i:integer;
begin
ch:=''; i:=0;
repeat
Inc(i);
str(i,c);
ch:=ch+c;
until length(ch)=b;
val(ch,m,i);
min:=m;
end;
function max(b:integer):longint;
var m:longint; c,ch:chaine; i:integer;
begin
ch:=''; i:=10;
repeat
Dec(i);
str(i,c);
ch:=c+ch;
until length(ch)=b;
val(ch,m,i);
max:=m;
end;
procedure trait(n:integer);
var cpt,i: longint;
begin
cpt:=0;
Writeln('La liste de nombres bien ordonnés à ',n,' chiffres
est :');
for i:=min(n) to max(n) do begin
if estbienord(i) then begin
Inc(cpt);
writeln(i);
end;
end;
writeln('Le nombre d''entiers bien ordonnés de ',n,' chiffres est
',cpt);
end;
begin
saisie(n);
trait(n);
end.
|