Permutation de 3 nentiers a,b et c

Résolu/Fermé
mis_angel
Messages postés
8
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
14 décembre 2009
- 29 nov. 2009 à 00:23
mis_angel
Messages postés
8
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
14 décembre 2009
- 29 nov. 2009 à 18:41
salut tt le monde

si vous pouvez m'aider je n'arrive pas à trouver la solution de cet exo en pascal
ecrire un procedure qui permute trois nombres entiers a,b et c afin d'obtenir a<=b<=c
merci d'avance
A voir également:

7 réponses

lalib1987
Messages postés
104
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
8 novembre 2012
6
29 nov. 2009 à 14:52
J'ai pas bien compris votre question.

Est-ce que vous voulez permuter tous les nombres comme:
Avant: A=1 B=2 C=3
Après: A=2 B=3 C=1

???
1
topcoder
Messages postés
81
Date d'inscription
mercredi 25 novembre 2009
Statut
Membre
Dernière intervention
14 décembre 2012
10
29 nov. 2009 à 02:01
Merci de donné votre proposition ^_^
0
lalib1987
Messages postés
104
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
8 novembre 2012
6
29 nov. 2009 à 15:21
Dans le cas où
Avant: A=1 B=2 C=3
Après: A=2 B=3 C=1

Il y'a beaucoup de méthodes, mais la plus simple est d'utiliser l'algorithme suivant:

A:= A + B + C ;
C:= A - B - C ;
B:= A - B - C ;
A:= A - B - C ;


Explication:
La 1ere ligne effectue:>>> A = 1 + 2 + 3 = 6
La 2eme ligne effectue:>>> C = 6 - 2 - 3 = 1
La 3eme ligne effectue:>>> B = 6 - 2 - 1 = 3
La 4eme ligne effectue:>>> A = 6 - 3 - 1 =2


N.B: N'oubliez pas de passer les paramètres de la procédure par adresse et pas par valeur.
0
mis_angel
Messages postés
8
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
14 décembre 2009

29 nov. 2009 à 15:45
merci lalib 1987
0
bonjour tout le monde!
moi je vous propose une autre solution assey connue
pour ça on fera appel a deux autres variables
alors soient x,y ces variables
x:=A;
y:=B;
A:=B;
b:=C
C:=y;
et voila!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mis_angel
Messages postés
8
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
14 décembre 2009

29 nov. 2009 à 16:43
bon moi je propose cette solution et vous pouvez me donnez votre avie

program exo;
var ech,a,b,c:integer;
begin
write('donner les trois valeurs :');
readln(a,b,c);
if (a>b) then
begin
ech:=a;
a:=b;
b:=ech;
end;
if(b>c) then
begin
ech:=b;
b:=c;
c:=ech;
end;
if (a>b) then
begin
ech:=a;
a:=b;
b:=ech;
end;
writelen('apres rangement en ordre croisante',a,b,c);
end.
0
lalib1987
Messages postés
104
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
8 novembre 2012
6
29 nov. 2009 à 17:22
Ah maintenant j'ai compris la question hhh
votre solution que vous avez donné est juste et est simple aussi, et il n'y a mieux que d'être simple sans compliquer les choses...

J'ai étudié tous les cas possible, et votre programme marche très bien.
0
mis_angel
Messages postés
8
Date d'inscription
dimanche 29 novembre 2009
Statut
Membre
Dernière intervention
14 décembre 2009

29 nov. 2009 à 18:41
merci à vous tous
0