Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1834 connectés 

  FORUM HardWare.fr
  Programmation
  Ada

  Tableau à taille défini par l'user au runtime

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableau à taille défini par l'user au runtime

n°2114165
hahahafr
Machete don't text
Posté le 01-12-2011 à 11:01:00  profilanswer
 

Bonjour, je suis étudiant novice en ADA et j'ai un problème: je souhaiterai créé un tableau qui aurai une taille fixe, mais que je ne connais pas avant l'execution. Comment faire? Je tourne en rond pour l'instant avec les non-contraint.


---------------
Feed-back hahahafr Achat/Vente
mood
Publicité
Posté le 01-12-2011 à 11:01:00  profilanswer
 

n°2114187
Profil sup​primé
Posté le 01-12-2011 à 11:53:47  answer
 

bonjour,
 
Fait voir ton code. [:dawa]

n°2114194
hahahafr
Machete don't text
Posté le 01-12-2011 à 11:55:32  profilanswer
 

Je l'ai pas sous la main, je le poste vers 14h. Merci.


---------------
Feed-back hahahafr Achat/Vente
n°2114196
Profil sup​primé
Posté le 01-12-2011 à 11:58:34  answer
 

De toute manière on a pas 36 possibilités.
 
Pour déclarer une zone déclarative en cours d'implémentation c'est le mot clef "declare".
Et tu déclare ton tableau avec les bornes.

n°2114206
hahahafr
Machete don't text
Posté le 01-12-2011 à 12:18:13  profilanswer
 

Tu veux dire dans le begin?

Code :
  1. procedure main is
  2.  n : Integer;
  3. begin
  4.  get(n);
  5. declare
  6.  tab : tableauNonContraint(1..n);
  7.  -- comment clore cet déclaration?

Message cité 1 fois
Message édité par hahahafr le 01-12-2011 à 12:19:49

---------------
Feed-back hahahafr Achat/Vente
n°2114208
Profil sup​primé
Posté le 01-12-2011 à 12:20:55  answer
 

hahahafr a écrit :

Tu veux dire dans le begin?

Code :
  1. procedure main is
  2.  n : Integer;
  3. begin
  4.  get(n);
  5. declare
  6.  tab : tableauNonContraint(1..n);
  7.  -- comment clore cet déclaration?



 
Avec un nouveau begin et un end associé.

n°2114216
hahahafr
Machete don't text
Posté le 01-12-2011 à 12:42:44  profilanswer
 

Comme ceci?

Code :
  1. procedure main is
  2.  n : Integer;
  3. begin
  4.  get(n);
  5. declare
  6.  tab : tableauNonContraint(1..n);
  7. begin
  8.  for i in tab'range loop
  9.    get(tab(i));
  10.  end loop;
  11. end main;


---------------
Feed-back hahahafr Achat/Vente
n°2114219
Profil sup​primé
Posté le 01-12-2011 à 12:49:29  answer
 

hahahafr a écrit :

Comme ceci?

Code :
  1. procedure main is
  2.  n : Integer;
  3. begin
  4.  get(n);
  5. declare
  6.  tab : tableauNonContraint(1..n);
  7. begin
  8.  for i in tab'range loop
  9.    get(tab(i));
  10.  end loop;
  11. end main;



 
Non, il manque un end.
 
Comme ça :

Code :
  1. procedure main is
  2.  n : Integer;
  3. begin
  4.  get(n);
  5.  declare
  6.    tab : tableauNonContraint(1..n);
  7.  begin
  8.     for i in tab'range loop
  9.       get(tab(i));
  10.     end loop;
  11.   end;
  12. end main;

n°2114221
hahahafr
Machete don't text
Posté le 01-12-2011 à 13:01:33  profilanswer
 

Ok merci beaucoup je teste ça tout à l'heure.


---------------
Feed-back hahahafr Achat/Vente
n°2114232
hahahafr
Machete don't text
Posté le 01-12-2011 à 13:43:35  profilanswer
 

hahahafr a écrit :

Ok merci beaucoup je teste ça tout à l'heure.


Oui ça marche, parfait.

mood
Publicité
Posté le 01-12-2011 à 13:43:35  profilanswer
 

n°2114279
hahahafr
Machete don't text
Posté le 01-12-2011 à 15:51:23  profilanswer
 

Ce code est-il correct?

Code :
  1. procedure main is
  2.  -- var
  3. begin
  4.  -- do something
  5.  declare
  6.    -- var
  7.  begin
  8.    -- do something
  9.  end;
  10.  declare
  11.    -- var
  12.  begin
  13.    -- do something
  14.  end;
  15. end main;


Message édité par hahahafr le 01-12-2011 à 15:51:32

---------------
Feed-back hahahafr Achat/Vente
n°2114282
Profil sup​primé
Posté le 01-12-2011 à 15:56:28  answer
 

Oui.

n°2115406
hahahafr
Machete don't text
Posté le 07-12-2011 à 17:26:02  profilanswer
 

En fait chaque bloc begin -> end; est indépendant vis-à-vis des variables. Apparement ils ne partagent pas les variables. C'est vraiment embettant.


---------------
Feed-back hahahafr Achat/Vente
n°2115410
hahahafr
Machete don't text
Posté le 07-12-2011 à 17:34:13  profilanswer
 

Simple en fait:

Code :
  1. procedure main is
  2.  -- var
  3. begin
  4.  -- do something
  5.  declare
  6.    -- var
  7.  begin
  8.    -- do something
  9.  declare
  10.    -- var
  11.  begin
  12.    -- do something
  13.  end;
  14.  end;
  15. end main;


---------------
Feed-back hahahafr Achat/Vente
n°2115411
hahahafr
Machete don't text
Posté le 07-12-2011 à 17:34:28  profilanswer
 

C'est sale cela dit.


---------------
Feed-back hahahafr Achat/Vente
n°2115425
Profil sup​primé
Posté le 07-12-2011 à 18:01:12  answer
 

hahahafr a écrit :

C'est sale cela dit.


 
Sale toi même. Non mais tu t'es vu ?
Tu demande des idée aux autre et tu critique ... Tu te prend pour quoi ?
Allé, à la revoyure.

n°2115426
hahahafr
Machete don't text
Posté le 07-12-2011 à 18:02:42  profilanswer
 

Voici mon code, si vous avez des idées pour améliorations je suis preneur. Merci.

Code :
  1. with entrees_sorties; use entrees_sorties;
  2.  
  3. procedure exo3 is
  4.  tailleTableau : Integer;
  5.  type TableauDEntiers is array (Positive range <> ) of Integer;
  6.  nbDeMultDe3 : Integer := 0;
  7. begin
  8.  get(tailleTableau);
  9.  while (tailleTableau < 1) loop
  10.    put("Entrez un entier positif : " );
  11.    get(tailleTableau);
  12.  end loop;
  13. declare
  14.  tab : TableauDEntiers(1..tailleTableau);
  15. begin
  16.  for i in tab'range loop
  17.    get(tab(i));
  18.    if (tab(i) mod 3 = 0) then
  19.      nbDeMultDe3 := nbDeMultDe3 + 1;
  20.    end if;
  21.  end loop;
  22.  
  23. declare
  24.  tabRes1 : TableauDEntiers(1..nbDeMultDe3);
  25.  tabRes2 : TableauDEntiers(1..(tailleTableau - nbDeMultDe3));
  26.  compteurRes1 : Integer := 1;
  27.  compteurRes2 : Integer := 1;
  28. begin
  29.  for i in tab'range loop
  30.    if (tab(i) mod 3 = 0) then
  31.      tabRes1(compteurRes1) := tab(i);
  32.      compteurRes1 := compteurRes1 + 1;
  33.    else
  34.      tabRes2(compteurRes2) := tab(i);
  35.      compteurRes2 := compteurRes2 + 1;
  36.    end if;
  37.  end loop;
  38.  put("Il y a " & Integer'Image(nbDeMultDe3) & " multiples de 3 : " );
  39.  for i in tabRes1'range loop
  40.    put(Integer'Image(tabRes1(i)) & ", " );
  41.  end loop;
  42.  put(" et " & Integer'Image(tabRes2'length) & " non multiples : " );
  43.  for i in tabRes2'range loop
  44.    if (i /= tabRes2'length) then
  45.      put(Integer'Image(tabRes2(i)) & ", " );
  46.    else
  47.      put(Integer'Image(tabRes2(i)) & "." );
  48.    end if;
  49.  end loop;
  50. end;
  51. end;
  52. end exo3;


---------------
Feed-back hahahafr Achat/Vente
n°2116665
hahahafr
Machete don't text
Posté le 14-12-2011 à 17:56:56  profilanswer
 


Excuses-moi, je parlais pour moi. Merci pour l'aide.


---------------
Feed-back hahahafr Achat/Vente
n°2116667
Profil sup​primé
Posté le 14-12-2011 à 18:23:44  answer
 

hahahafr a écrit :


Excuses-moi, je parlais pour moi. Merci pour l'aide.


 
C'est Ada. [:dawa]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Ada

  Tableau à taille défini par l'user au runtime

 

Sujets relatifs
Régler la taille de la zone de graphiqueVariable tableau / Range("A1:A" & i) = montab - ne fonctionne pas
[RESOLU] Recuperer tableau associatif de ma sessionproblème exercice tableau
diviser tableau en plusieurs pagesmodifier directement tableau page web
Copy de tableau de caractère dans un tableau de caractère.HTML/CSS : Centrage tableau bug
Comment lire un tableau dans le registre 
Plus de sujets relatifs à : Tableau à taille défini par l'user au runtime


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR