|
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.
|