Algorithe en pascal

sara -  
blux Messages postés 5043 Date d'inscription   Statut Modérateur Dernière intervention   -
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
Configuration: Windows XP
Firefox 3.5.7

2 réponses

  1. xmaster2216
     
    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
  2. blux Messages postés 5043 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    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