Je m'apprends actuellement à Ada et bien que je puisse commencer en abordant certains des problèmes plus classiques pour commencer.Longueur arbitraire entier dans Ada
Plus précisément, j'essaie de calculer la factorielle n !, alors que n> 100. Ma mise en œuvre jusqu'à présent est:
with Ada.Text_IO;
with Ada.Integer_Text_IO;
use Ada.Text_IO;
procedure Factorial is
-- define a type covering the range beginning at 1 up to which faculty is to
-- be computed.
subtype Argument is Long_Long_Integer range 1..100;
-- define a type that is large enough to hold the result
subtype Result is Long_Long_Integer range 1..Long_Long_Integer'Last;
package Result_IO is new Ada.Text_IO.Integer_IO(Result); use Result_IO;
-- variable holding the faculty calculated.
fac : Result := 1;
begin
-- loop over whole range of ARGUMENT and calculate n!
for n in ARGUMENT loop
fac := (fac * n);
end loop;
end;
Le problème est évidemment que même Long_Long_Integer est peut trop petit pour cela et jette une exception CONTRAINT_ERROR pour n> 20.
Existe-t-il un package qui implémente des entiers de taille arbitraire?
Merci! PS: J'ai opté pour la récursivité parce que je voulais explorer les boucles dans cet exercice. Sinon, veuillez commenter tous les aspects du code (style, meilleures pratiques, erreur ..)
merci beaucoup! C'est beaucoup plus d'une réponse que j'espérais obtenir .. Je vais vérifier. – Arne
Bonne réponse, Christian. Je suis allé de l'avant et vérifié vos pages Web supplémentaires et les a transformés en liens pour vous. Espérons que les 10 points supplémentaires de mon upvote vous aideront à vous propulser plus tôt des terres noob non fiables. –