Re: Aide Ada
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.ada ]
Pour les conditions, je vais utiliser type énuméré, ce sera bien plus
simple :) Désolé pour les parenthèses (habitude)
En ce qui concerne le deuxième point, le use avant le with, c'est une
erreur lors de l'envoi du post :)
Pour le tableau voici les fichiers :
with text_io; use text_io;
with Lexique; use Lexique;
With Sequential_Io;
with ada.strings;
with Ada.Integer_Text_IO;
package body Coureurs is
PACKAGE Reels_Io IS NEW Float_Io (Float);
USE Reels_Io;
PACKAGE Entiers_Io IS NEW Integer_Io (Integer);
USE Entiers_Io;
Type NomDeCoureur is new string (1..15);
NC : NomDeCoureur;
Coureurs : array (1..Nbcour) of NomDeCoureur;
i: integer range 1..Nbcour;
L: integer;
procedure Init_Coureurs is
-- {e.i : Indifférent}
begin
L := 0; -- Longueur du tableau
i := 1; -- Indice du tableau
-- {e.f : On a initialisé le tableau des Coureurs}
end Init_Coureurs;
procedure Ajouter_Coureurs is
-- {e.i : Le tableau des Coureurs existe}
longueur : integer := 0;
begin
while (Longueur /= 4 AND NC /= "STOP") and i <= Nbcour loop
Put_Line("Entrez la longueur du prénom");
get(longueur);New_line;
Put("Entrez le prénom du coureur. ");
Put_Line("Une fois terminé, rentrez 4, puis le mot STOP.");
Get(string(NC(1..longueur)));
Coureurs(i) := NC;
i := i + 1; L := L+1;
end loop;
-- {e.f : On a ajouté un ou des coureurs}
end Ajouter_Coureurs;
procedure Afficher_Coureurs is
-- {e.i : Le tableau des Coureurs existe}
begin
i := 1;
if (L = 1) then Put("Tableau vide.");
else while i /= L loop
Ada.Integer_Text_IO.Put (Item =>i);
Put (". ");
Put(string(Coureurs(i)));
New_line;
i := i + 1;
end loop;
-- {e.f : On a affiché le contenu du tableau Coureurs}
end if;
end Afficher_Coureurs;
end Coureurs;;
Certes, cela peut largement être optimisé, mais pour l'instant je me
focalise sur le problème avec le tableau coureurs.
Voici l'autre fichier ayant besoin de ce tableau :
with text_io; use text_io;
with Lexique; use Lexique;
With Sequential_Io;
with ada.strings;
with Ada.Integer_Text_IO;
with unchecked_deallocation;
with conversion; use conversion;
with Coureurs; use Coureurs;
package body Performances is
PACKAGE Reels_Io IS NEW Float_Io (Float);
USE Reels_Io;
PACKAGE Entiers_Io IS NEW Integer_Io (Integer);
USE Entiers_Io;
procedure liberer is new unchecked_deallocation(doublet, adresse);
procedure allouer (R : out adresse) is
begin
R := new doublet;
end allouer;
Tperf : adresse;
procedure Init_Perf is
begin
-- Je ne copie pas ce que je fais sur Tperf, mais cela retourne quand
même l'erreur
Put(string(Coureurs(Tperf.el.num)));
end Init_Perf;
Et le lexique :
Nbcour : constant integer := 100; -- Nombre de coureurs engagés
Type Dossard is new integer range 1..Nbcour;
Type NomDeCoureur is new string (1..15);
Type Duree is record
min : integer range 0..59;
sec : integer range 0..59;
end record;
Type Perf is record
num : Dossard;
tps : Duree;
end record;
type doublet;
type adresse is access doublet;
type doublet is record
el : Perf;
suiv : adresse;
end record;
L'erreur est Incorrect use of "Courreurs"
Merci pour votre aide

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|