現在、私はAdaを教えていますが、私は始めるために従来のいくつかの問題に取り組むことができます。Adaの任意の長さ整数
具体的には、n> 100であるのに対して、階乗n!を計算しようとします。私の実装では、これまでされています。問題は、それさえLong_Long_Integerが、このためには小さすぎることで、n> 20のためのCONTRAINT_ERROR例外をスロー明らかである
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;
。
任意の整数を実装するパッケージはありますか?
ありがとうございます!
PS:私はこの演習でループを探索したいので、再帰を選択しませんでした。しかし、そうでない場合は、コードの全側面(スタイル、ベストプラクティス、エラー..)にコメントしてください。
ありがとう!それは私が得ることを望んでいたよりもはるかに多くの答えです。私はそれをチェックします。 – Arne
良い答え、キリスト教徒。私は先に進み、あなたの余分なウェブページを確認し、それらをあなたのためのリンクに変えました。うまくいけば、私のupvoteから余分な10ポイントは、より早く信頼できないnoob土地のあなたを推進するのに役立ちます。 –