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

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

Marsh Posté le 01-12-2011 à 11:01:00    

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
Reply

Marsh Posté le 01-12-2011 à 11:01:00   

Reply

Marsh Posté le 01-12-2011 à 11:53:47    

bonjour,
 
Fait voir ton code. [:dawa]

Reply

Marsh Posté le 01-12-2011 à 11:55:32    

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


---------------
Feed-back hahahafr Achat/Vente
Reply

Marsh Posté le 01-12-2011 à 11:58:34    

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.

Reply

Marsh Posté le 01-12-2011 à 12:18:13    

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
Reply

Marsh Posté le 01-12-2011 à 12:20:55    

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é.

Reply

Marsh Posté le 01-12-2011 à 12:42:44    

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
Reply

Marsh Posté le 01-12-2011 à 12:49:29    

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;

Reply

Marsh Posté le 01-12-2011 à 13:01:33    

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


---------------
Feed-back hahahafr Achat/Vente
Reply

Marsh Posté le 01-12-2011 à 13:43:35    

hahahafr a écrit :

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


Oui ça marche, parfait.

Reply

Marsh Posté le 01-12-2011 à 13:43:35   

Reply

Marsh Posté le 01-12-2011 à 15:51:23    

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
Reply

Marsh Posté le 01-12-2011 à 15:56:28    

Oui.

Reply

Marsh Posté le 07-12-2011 à 17:26:02    

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
Reply

Marsh Posté le 07-12-2011 à 17:34:13    

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
Reply

Marsh Posté le 07-12-2011 à 17:34:28    

C'est sale cela dit.


---------------
Feed-back hahahafr Achat/Vente
Reply

Marsh Posté le 07-12-2011 à 18:01:12    

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.

Reply

Marsh Posté le 07-12-2011 à 18:02:42    

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
Reply

Marsh Posté le 14-12-2011 à 17:56:56    


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


---------------
Feed-back hahahafr Achat/Vente
Reply

Marsh Posté le 14-12-2011 à 18:23:44    

hahahafr a écrit :


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


 
C'est Ada. [:dawa]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed