协助ada中的spigot算法

时间:2019-04-06 18:42:56

标签: algorithm ada

所以我的代码是

with ada.integer_text_io; use ada.integer_text_io;
with Ada.Text_IO; use Ada.Text_IO;

procedure Spigot is
n : constant Integer := 1000;
length : constant Integer := 10*n/3+1;
x,q,nines,predigit :Integer :=0;
a: array (0..length) of Integer;

begin
nines:=0;
predigit:=0;

for j in 0..length loop
    a(j):=2;
end loop;

for j in  1..n loop
    q:=0;
    for i in reverse 1..length loop
        x:=10*a(i) + q*i;
        a(i):= x mod (2*i-1);
        q:= x/(2*i-1);
    end loop;

    a(1):= q mod 10;
    q:=q/10;

    if q = 9 then
        nines:=nines+1;
    elsif q = 10 then
        put(predigit+1);
        for k in 0..nines loop
            put("0");
        end loop;
        predigit:=0;
        nines:=0;
    else
        put(predigit);
        predigit:=q;
        if nines/=0 then
            for k in 0..nines loop
                put("9");
            end loop;
            nines:=0;
        end if;      
    end if;   
end loop;
put(predigit);

端刺;

它应该一次输出pi的数字,但一次输出1位数,但是它搞砸了,往0 3 1 4 1 599前进,然后从那里搞砸了,我不知道为什么

0 个答案:

没有答案