|
1) Procédure Echange2 sur 2 réels a, b qui échange éventuellement a et b, pour
que l'état de sortie soit a ≤ b.
2) Procédure Echange3 sur 3 réels a, b, c qui appelle Echange2. L'état de sortie
est a ≤ b ≤ c.
|
{ 1 }
PROCEDURE Echange2 (var a, b : real);
VAR t : real;
BEGIN
if a > b then
begin t := a; a := b; b := t; end;
END;
PROGRAM Tri1;
VAR u, v : real;
{ Mettre ici la procedure }
BEGIN
write ('u v ? '); readln (u, v);
Echange2 (u, v);
writeln (u, ' <= ', v);
END
{ On se pose la question : var ou pas var ?
- Pas de var : a et b sont des variables locales, initialisées par l'appel, et perdues aprés.
- Avec un var : a et b sont des alias de u et v.
=> Manipuler a et b revient à manipuler directement u et v. }
{ 2 }
PROCEDURE Echange3 (var a, b, c : real);
BEGIN
Echange2 (a, b); { on met le plus petit dans a }
Echange2 (a, c);
Echange2 (b, c); { a etant le plus petit, on trie b,c }
END;
{ Il y a d'autres solutions possibles. Exemple : }
Echange2 (a, b); { on met le plus grand dans b }
Echange2 (b, c); { on met le plus grand dans c }
Echange2 (a, b); { c etant le plus grand, on trie a,b }
|
|
Signaler un abus
|
|