[問題] 為何這樣會爆掉@@@@@@@@@@@@@救命啊!!
我的程式碼如下:
==============================================
program Q1
implicit none
real,parameter :: n=30
real(kind=8) :: a(n)
integer i
real :: AA=0.0
do i=1,n
a(i)=AA*3**i-0.4*(1/2)**i-0.1*i-0.05
write(*,*) a(i)
end do
stop
end
===============================================
這是一個計算數列的小程式,但我不懂為何執行後到第a(20)就會爆掉..
但如果我不用迴圈單純輸入a(20)=AA*3**20-0.4*(1/2)**30-0.1*30-0.05
這樣就可以成功了@@
那到底為何無法用迴圈跑出來~~~救命啊
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.26.246
→
03/14 17:10, , 1F
03/14 17:10, 1F
→
03/14 17:58, , 2F
03/14 17:58, 2F
→
03/14 18:02, , 3F
03/14 18:02, 3F
→
03/14 18:20, , 4F
03/14 18:20, 4F
推
03/14 18:49, , 5F
03/14 18:49, 5F
可以給點提示嗎~"~ 難道a(n)不是用real?
但除了real也沒有別的東西可以用了啊@@..
*[1;31m→ *[33mgilocustom*[m*[33m:你已經排除a了,但是n、i與AA呢? 03/15 00:00
都試過了.. 依然無解啊:(
我抓到應該是爆在3的20次方那裡.. 但是為何會爆掉呢
而且是在迴圈裡才會爆掉 如果單純計算
AA*3**20-0.4*(1/2)**20-0.1*20-0.05 就可以算出來
詭異啊~~~~~~~
→ Cypresslin:怎麼試的講講看吧 *[m 03/15 00:07
i跟n宣告integer應該沒問題吧 AA宣告real(kind=8) 依然crash..
→
03/15 00:54, , 6F
03/15 00:54, 6F
→
03/15 00:54, , 7F
03/15 00:54, 7F
=================修正過後===============
program Q1
implicit none
integer,parameter :: n=30
real(kind=8) :: a(n)
integer i
real(kind=8) :: AA=0.0
do i=1,n
a(i)=AA*3**i-0.4*(1/2)**i-0.1*i-0.05
write(*,*) a(i)
end do
stop
end
==========================================
結果 http://ppt.cc/~MQT
附註:若a(n)改寫成a(n)=-0.4*(1/2)**i-0.1*i-0.05則程式成功。
※ 編輯: darrenmm 來自: 111.240.210.163 (03/15 01:12)
→
03/15 01:21, , 8F
03/15 01:21, 8F
→
03/15 01:21, , 9F
03/15 01:21, 9F
→
03/15 01:22, , 10F
03/15 01:22, 10F
→
03/15 01:39, , 11F
03/15 01:39, 11F
→
03/17 08:22, , 12F
03/17 08:22, 12F
→
03/17 17:50, , 13F
03/17 17:50, 13F
→
03/19 02:07, , 14F
03/19 02:07, 14F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章