No7490 の記事


/ )  Re[2]: FORTRAN66版パイ計算プログラムの移植
□投稿者/ うぇいく 【210.160.252.167】(2016/03/31(Thu) 13:24:03)

    こちらでは、以下のような感じのソースにしています。
    ※TABが詰まったりしているのでインデントに注意。
    メイン以外の関数について、単体テスト形式で動作確認を行った関係で、メイン部分が(単体テスト時に実行されないように)関数内に乗せてあります。
    ------------
    //ここから
    N15とは整数
    Aとは整数
    Bとは整数
    Cとは整数

    PI算出

    ●PI算出
    Xとは文字列
    『何桁まで計算しますか? (最大1000桁まで)』で尋ねる
    N15はそれ
    X=メイン処理(N15)
    Xのメモ記入

    ●メイン処理(N15)
    Xとは文字列
    N15回
    I=回数-1
    A\(I)は0
    B\(I)は0
    C\(I)は0
    NBは5
    N1は1
    (1)の間
    N0は1
    B\(0)は1
    N15回
    母艦のタイトルは「{回数} {N1} {NA} {NB}」
    待つ。
    K=回数-1
    NA=NB
    2回
    // B()/NAをC()に設定
    WARU(NA)
    // C()をB()にコピー
    N15回
    J=回数-1
    B\(J)=C\(J)
    もし、Kが0ならば抜ける。
    NA=N0
    WARU(NA)
    N0=N0+2
    (N1の符号)で条件分岐。
    -1ならば
    SUBA
    N1=N1*(-1)
    0ならば
    ADDA
    N1=N1*(-1)
    1ならば
    ADDA
    N1=N1*(-1)
    // A()*4をA()に設定
    KAZ1=0
    N15回
    I=回数-1
    I0=N15+1-回数-1
    KAZ0=A\(I0)*4+KAZ1
    KETA(KAZ0,KAZ1)
    A\(I0)=KAZ0
    もし、NBが239ならば
    #デバッグ。
    X=『π=』
    N15回
    X=「{X}{A\(回数-1)}」
    抜ける。
    NB=239
    N1=-1
    それはX

    // B()/NAをC()に設定する
    ●WARU(NA)
    KAZ0=0
    KAZ1=0
    N15回
    I=回数-1
    KAZ1=KAZ0+B\(I)
    C\(I)=IDIV(KAZ1,NA)
    KAZ0=KAZ1-C\(I)*NA
    KAZ0=KAZ0*10

    // A()+C()をA()に設定する
    ●ADDA
    KAZ1=0
    N15回
    J=回数-1
    JC=N15+1-回数-1
    KAZ0=A\(JC)+C\(JC)+KAZ1
    KETA(KAZ0,KAZ1)
    A\(JC)=KAZ0

    // A()-C()を行い、A()に設定する
    ●SUBA
    KAZ1=0
    N15回
    J=回数-1
    JC=N15+1-回数-1
    JBB=JC-1
    KAZ0=A\(JC)-C\(JC)
    もしKAZ0が0以上ならば
    A\(JC)=KAZ0
    違えば、
    KAZ1=A\(JBB)
    KARI(KAZ0,KAZ1)
    A\(JBB)=KAZ1
    A\(JC)=KAZ0

    ●KETA({参照渡し}KAZ0,{参照渡し}KAZ1)
    KAZ1=IDIV(KAZ0,10)
    KAZ0=KAZ0-KAZ1*10

    ●KARI({参照渡し}KAZ0,{参照渡し}KAZ1)
    KAZ0=KAZ0+10
    KAZ1=KAZ1-1

    ●IDIV(I,J)
    それは((I-(I%J))/J)
    //ここまで

返信 削除キー/
返信


Pass/

BBS CGI RSS CGI
Child Tree RSS/SPAM対応版