Algorithe en pascal

Fermé
sara - 9 févr. 2010 à 20:41
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 - 10 févr. 2010 à 19:00
Bonjour,
j'ai un probleme de resoudre un exercice de programmation et je suis debutante en cette matiere, alors je demande l'aide de resoudre cet exercice
l'exercice:
on se propose de saisir un entier N de trois chiffres non nuls , de determiner et d'afficher tous les nombres qui peuvent etre formés par les chiffres de N , ainsi que le plus petit et le plus grand de ces nombres.
exp:
pour N=427
les nombres formés par les chiffres de N sont: 427,472,247,274,742,724.
le plus petit nombre est : 247
le plus grand nombre est 742
je deja essayer de faire
l'algorithme de programme principal
0) debut exercice
1)proc saisir (N)
2)proc recherche (n)[integre la permitation des chiffres (proc permit) et l'affichage (proc affiche)]
3)fin exercie.

algorithme de la procedure saisir ;
0)procedure saisir (var n :entier)
1)repeter
ecrire("n=") , lire (n)
jusqu'a n dans [100..999]
2)fin saisir .
et j'ai stopper là
merci d'avance de m'aider svp
A voir également:

2 réponses

voila une traduction en pascal pour l'exercice :

program possibilites;
uses wincrt;
type tab= array [0..6] of integer;
var n,i,x,y,z,min,max:integer;
T:tab;
procedure saisir(var n:integer);
begin
repeat
write('n='); readln(n);
until (n>=100) and (n<=999);
end;

procedure nombres(var x,y,z:integer;var T:tab);
begin
x:= (n div 100);
y:= ((n mod 100)div 10);
z:= ((n mod 100) mod 10);

T[1]:=(x*100)+(y*10)+z;
T[2]:=(x*100)+(z*10)+y;
T[3]:=(y*100)+(x*10)+z;
T[4]:=(y*100)+(z*10)+x;
T[5]:=(z*100)+(x*10)+y;
T[6]:=(z*100)+(y*10)+x;

writeln('les nombres qu on peut former sont ');
for i:=1 to 6 do
begin
writeln('T[',i,']=',T[i]);
end;
end;

procedure min_max(T:tab);
begin
min:=T[1];
for i:= 1 to 6 do
begin
if (min>T[i]) then
min:=T[i];
end;
max:=T[1];
for i:=1 to 6 do
begin
if (max<T[i]) then
max:=T[i];
end;
writeln('le max est ',max);
writeln('le min est ',min);
end;

begin
saisir(n);
nombres(x,y,z,T);
min_max(T);
end.


j'espere que ça vous aide!!
0
blux Messages postés 26047 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 mai 2024 3 289
10 févr. 2010 à 19:00
Salut,

on peut aussi créer le plus petit nombre en rangeant de gauche à droite les chiffres dans l'ordre croissant et inversement pour le plus grand nombre, ça évite le parcours du tableau...
0