J'ai essayé de résoudre cet exercice :
Écrire un programme qui permet de :
o Saisir un entier N de trois chiffres non nuls.
o Déterminer et d’afficher tous les nombres qui peuvent être formés par les chiffres de N.
Exemple : Pour n=427, le programme affiche :
Les nombres formés par les chiffres de n sont : 427, 472, 724, 742, 247,274.

Voilà ma solution , elle marche bien mais je veux une solution itérative je ne veux pas remplir le tableau à la main case par case :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
program nombre_possibles;
uses wincrt;
type
tab=array[1..6] of integer;
var
n:integer;
t:tab;
 
 
procedure saisie(var n:integer);
begin
     repeat
     writeln('saisir un entier de 3 chiffres');
     readln(n);
     until(n>=100) and (n<=999);
end;
 
 
 
procedure construire(n:integer; var t:tab);
var i, c, d, u:integer;
begin
c:=n div 100;
d:= (n mod 100) div 10;
u:=n mod 10;
 
t[1]:=c*100+d*10+u;
t[2]:=c*100+u*10+d;
t[3]:=d*100+u*10+c;
t[4]:=d*100+c*10+u;
t[5]:=u*100+c*10+d;
t[6]:=u*100+d*10+c;
end;
 
 
procedure affiche(t:tab);
var i:integer ;
begin
   writeln('Les nombres possibles sont :' );
   for i:=1 to 6 do
       writeln(t[i]);
 
end;
 
 
begin
saisie(n) ;
construire(n,t);
affiche(t);
end.