2010-03-30 15 views
3

J'ai besoin d'un tableau de 820 zéros pour l'utilisation avec une fonction mathématique.Dans Ada, comment initialiser une constante de tableau avec un nombre répété?

En C je pourrais simplement écrire ce qui suit et le compilateur remplir le tableau:

const float EMPTY_NUMBER_A[820] = { 0.0, }; 

Cependant Ada cela est impossible. Je ne veux vraiment pas coder les 820 éléments comme 0.0. Y at-il un moyen d'obtenir le compilateur pour le faire?

type Number_A is array (1 .. 820) of Float; 
EMPTY_NUMBER_A : constant Number_A := ???; 

En utilisant Ada 95 et GNAT.

+3

Êtes-vous sûr que C a vraiment une caractéristique comme ça? Si vous voulez que ce tableau soit initialisé avec des valeurs doubles de 0.0, le système initialisant la zone de mémoire complète à zéro octet ressemblera à un tableau de 0.0 double. Est-ce que cette fonctionnalité fonctionne vraiment si le tableau est initialisé avec '{3.0,}'? – ndim

Répondre

9

Utilisez un aggregate:

Empty_Number_A : constant Number_A := (others => 0.0); 
+0

Beaucoup plus concis alors mes 41 lignes de 20 zéros chacun. –

+2

Ceci est très puissant BTW. Si vous voulez mettre tout sauf l'élément 20 à 0, vous pouvez faire '(20 => 17.5, autres => 0.0)' –

+1

Aussi, vous pourriez dire '(autres => Ada.Numerics.Float_Random.Random (Gen)) 'remplir avec Floats aléatoire. Vous devez avoir installé le générateur 'Gen' en premier, bien sûr. –

Questions connexes