Bookmark and Share

Liens sponsorisés

Login Form



Permutation Print E-mail
Written by Administrator   
Ecrire un programme Pascal qui permet de saisir un entier positif N, composé de trois chiffres , de déterminer
et d'afficher tous les nombres qui peuvent être formés par les chiffres de N, ainsi que le plus petit et le plus
grand de ces nombres
Exemple :
Pour N = 427, le programme affichera :
Les nombres formés par les chiffres de 427 sont : 427, 472, 724, 742, 247, 274
Le plus petit nombre est 247
Le plus grand nombre est 742

Question supplémentaire : Essayez de trouver le programme qui peut faire ceci avec tous les nombres N, quelque soit leurs tailles. (Correction non disponible pour le moment)

Correction
En Pascal : Par M. Zouari Lazhar, Lycée El Omrane-El-Aala, année 06/07
Program COMPOSE;
Uses WinCrt;
Type TAB = Array[1..6] of integer;
Var N:integer; T:TAB;
Procedure lire (Var x:integer);
Begin
Repeat
   Writeln('Donnez un entier non nul composé de trois
chIffres');
   Readln(x);
Until ((x >= 100) and (x <= 999));
End;
Procedure Former (Var V:TAB;x:integer);
Var u,d,c:integer;
Begin
c:= x Div 100; d:= (x Mod 100) Div 10; u := x Mod 10;
V[1] := x;
V[2] := (c*100) + (u*10) + d;
V[3] := (u*100) + (d*10) + c;
V[4] := (u*100) + (c*10) + d;
V[5] := (d*100) + (c*10) + u;
V[6] := (d*100) + (u*10) + c;
End;
Procedure afficher (V:TAB);
Var i:integer;
Begin
For i:= 1 To 6 Do Write (V[i]:5);
Writeln;
End;
Function Min (V:TAB):integer;
Var i,x:integer;
Begin
x:= V[1];
For i:= 2 To 6 Do If V[i] < x Then x:= V[i];
Min := x;
End;
Function Max (V:TAB):integer;
Var i,x:integer;
Begin
x:= V[1];
For i:= 2 To 6 Do
   If V[i] > x Then x:= V[i];
Max := x;
End;
Begin
Lire (N);
Former (T,N);
Write ('Les nombres Formés par les chIffres de ',N,' sont:');
Afficher (T);
Writeln ('Le plus petit nombre est ',Min (T));
Writeln ('Le plus grand nombre est ',Max (T));
End.
 

 

Liens sponsorisés