2017-02-08 18 views
-1
 program partOne 
     integer hit, i 
     real x, y, equation, finalE, compE, finalHit 
     parameter (pi = 3.1415926535) 

c This program computes pi using the Monte Carlo method 
     do 10 i = 1, 1000000 
      x = rand() 
      y = rand() 
      equation = sqrt((x*x) + (y*y)) 
      if (equation .LE. 1.0) hit = hit + 1 
10 continue 
     write(*,*) 'hits = ', hit 
     finalHit = hit 
     write(*,*) 'finalHits = ', finalHit 
     finalE = ((finaHit/1000000) * 4) 
     write(*,*) 'pi = ', pi 
     write(*,*) 'Computed pi = ', finalE 
     END PROGRAM partOne 

finalEが正しく計算されないのはなぜですか?すべてが正しく割り当てられているようですが、方程式が完了すると完全に間違っています。それはpiに近いはずです。fortranが正しく計算されないのはなぜですか?

更新:更新後の

 program partOne 
     integer hit, i 
     real x, y, equation, finalE, compE, finalHit 
     parameter (pi = 3.1415926535) 

c This program computes pi using the Monte Carlo method 
     hit = 0 
     do 10 i = 1, 1000000 
      x = rand() 
      y = rand() 
      equation = sqrt((x*x) + (y*y)) 
      if (equation .LE. 1.0) hit = hit + 1 
10 continue 
     write(*,*) 'hits = ', hit 
     finalHit = hit 
     write(*,*) 'finalHits = ', finalHit 
     finalE = ((finaHit/1000000.0) * 4.0) 
     write(*,*) 'pi = ', pi 
     write(*,*) 'Computed pi = ', finalE 
     END PROGRAM partOne 

結果:

hits =  785524 
finalHits = 785524.00  
pi = 3.1415927  
Computed pi = -5.21399923E+23 

答えて

3

hit = hit + 1を。 hitは、0または他の値にコンパイラやその他のオプションに応じて初期化することができます。あなたがそれを増やすループの前にhit = 0を追加してください。

finalE = ((finaHit/1000000) * 4)は、finalE = ((finalHit/1000000.0) * 4.0)である必要があります。 finaHitが定義されていないので、finalHitに変更してください。 realの値を乗算してrealの値に加算する場合は、.0を追加してください。

これらの変更を作る:私はあなたがお勧め私の更新されたコードの変更を行ってみた

$ a.out 
hits =  785524 
finalHits = 785524.000 
pi = 3.14159274 
Computed pi = 3.14209604 
+0

。しかし、それは私にあなたが得た結果を与えるものではありません。私はあなたの推薦から逃したものは何ですか?本当にお詫び申し上げます。私は今日コンピューターで長時間過ごしていて、私は何かが明らかでないと確信しています。私は本当に助けを感謝します – XXIV

+0

私は元の質問btwに私の更新されたコードを追加しました。 – XXIV

+2

'finalHit'は実数ですので、' finalHit/1000000'は実際の式で、 'finalHit/1000000.0'と同じです。 – francescalus

関連する問題