Enoncé
Modifier ce programme de manière à prendre en compte la
possibilité de déclasser un coureur parmi les
12, connaissant son numéro de dossard (lu au clavier). Le programme
modifiera le panneau d'affichage en conséquence. Il ne contient
plus que les numéros de dossard des 11 premiers coureurs.
Solution
Algorithme
-- niveau 1
-- On suppose que les numéros de
dossard sont lus selon l'ordre d'arrivée des coureurs
début
Lecture et mémorisation
des numéros de dossard des 12 premiers coureurs;
Lire le numéro de dossard
du coureur déclassé;
Réactualisation du
tableau d'arrivée;
Affichage du nouveau tableau
d'arrivée;
fin;
-- niveau 2.1
-- Lecture et
mémorisation des numéros de dossards;
début
repeter 12 fois
afficher la chaine "Tapez
le numéro de dossard du coureur arrivé";
afficher sa place d'arrivée;
lire et mémoriser
le numéro de dossard;
fin repéter;
fin;
-- niveau 2.2
-- Lire le numéro de dossard du coureur
déclassé;
début
Affichage de la chaine "Tapez
le numéro de dossard du coureur déclassé";
Lire ce numéro de dossard;
Sauter une ligne;
fin;
-- niveau 2.3
-- Réactualisation du tableau d'arrivée;
début
Recherche de la place du coureur
déclassé;
Décalage des coureurs
arrivés derrière dans le tableau d'arrivée;
fin;
-- niveau 2.4
-- Affichage du nouveau tableau d'arrivée;
début
Afficher la première
ligne ("PLACE DOSSARD");
passer à la ligne;
repeter 11 fois
placer le curseur sur la colonne 5;
afficher la place d'arrivée du coureur (sur 2 caractères);
placer le curseur sur la colonne 12;
afficher son numéro de dossard (sur 2 caractères);
passer à la ligne;
fin repéter;
fin;
-- niveau 2.3.1
-- Recherche
de la place du coureur déclassé;
début
le coureur courant est le
premier du tableau;
tant que le numéro
de dossard du coureur déclassé est différent du numéro
de dossard du coureur courant faire
passer au coureur suivant dans le tableau;
fin tant que;
fin;
-- niveau 2.3.2
-- Décalage des coureurs arrivés
derrière dans le tableau d'arrivée;
début
pour chaque coureur
en partant du successeur du coureur déclassé jusqu'au 12ème
faire
décaler le coureur d'une place vers l'avant;
fin pour;
fin;
code Ada
with Ada.Text_io;
with Ada.Integer_Text_io;
procedure arrivee is
type Course is array(1..12)
of
Natural;
tableau:Course:=(others=>0);
declasse:Natural:=0;
begin
--
-- Lecture et mémorisation des numéros
de dossard des 12 premiers coureurs;
--
for i in tableau'range
loop
Ada.Text_io.put("Tapez le numero du coureur
arrivé ");
Ada.Integer_Text_io.put(i,width=>2);
Ada.Text_io.put("ème : ");
Ada.Integer_Text_io.get(tableau(i));
end loop;
--
-- Lire le numéro de dossard du coureur
déclassé;
--
Ada.Text_io.put("Tapez
le numero du coureur déclassé ");
Ada.Integer_Text_io.get(declasse);
Ada.Text_io.new_line;
--
-- Réactualisation du tableau d'arrivée
--
-- Recherche de la place du coureur
déclassé;
--
declare
i:Integer range
1..12:=1;
begin
loop
exit when
declasse=tableau(i);
i:=i+1;
end loop;
--
-- Décalage des coureurs arrivés
derrière dans le tableau d'arrivée;
--
for
j in i+1..12 loop
tableau(j-1):=tableau(j);
end
loop;
end;
--
-- Affichage du nouveau tableau d'arrivee
--
Ada.Text_io.put(" PLACE
");
Ada.Text_io.put("
DOSSARD ");
Ada.Text_io.new_line;
for i in tableau'first..11
loop
Ada.Text_io.set_col(5);
Ada.Integer_Text_io.put(i,width=>2);
Ada.Text_io.set_col(12);
Ada.Integer_Text_io.put(tableau(i),width=>2);
Ada.Text_io.new_line;
end loop;
end arrivee;
Dernière modification le / Last modified
: Tuesday March 07 2000 14:43:48