ED n·6-- Algorithmique et programmation-----corrigé |
Objectifs
Exercice 2
On souhaite inverser un tableau de valeurs boursières. Une valeur
boursière est caractérisée par sa dénomination
(un sigle de 5 caractères) et sa cotation. Le
tableau est préalablement trié selon l'ordre croissant
des cotations, on veut le ranger selon l'ordre décroissant.
Question 1
-- Algorithme
début
i<-a;
j<-b;
--
T(a..i-1) et T(j+1..b) sont déjà inversés
tant que non(i>j)
faire
permuter(T(i) et T(j);
incrémenter i;
décrémenter j;
fin tant que;
fin.
Question 2
subtype Cotation is Float
range
0.0..Float'last;
type Sigle is String(1..5);
type ValeurBoursiere is
record
cote:Cotation;
nom:Sigle;
end record;
type Bourse is array(Natural
range
<>) of ValeurBoursiere;
Question 3
Question 4
Question 5
with Ada.Text_io;use Ada.Text_io;
with Ada.Float_Text_io;use Ada.Float_Text_io;
procedure inversion is
subtype Cotation is Float
range
0.0..Float'last;
type Sigle is String(1..5);
type ValeurBoursiere is
record
nom:Sigle;
cote:Cotation;
end record;
type Bourse is array(Natural
range
<>) of ValeurBoursiere;
procedure permuter(x,y:in out
ValeurBoursiere) is
z:ValeurBoursiere:=x;
begin
x:=y;
y:=z;
end permuter;
procedure inverser(T: in out
Bourse) is
i:Integer:=T'first;
j:Integer:=T'last;
begin
loop
exit when i>=j;
permuter(T(i),T(j));
i:=i+1;
j:=j-1;
end loop;
end inverser;
procedure put(T:in Bourse) is
begin
put("(");new_line;
for i in T'range loop
put("(");
put(T(i).cote);
put(T(i).nom);
put(")");
new_line;
end loop;
put(")");
end put;
tab:Bourse(1..5):=(("BULL#",78.91),("accor",275.17),("valeo",406.69),("rexel",511.65),("Dexia",939.33));
begin
put(tab);
new_line;
inverser(tab);
put(tab);
new_line;
end inversion;