[問題] 請問這個程式碼是fortran嗎?

看板Fortran作者 (DoDo)時間12年前 (2012/04/27 00:00), 編輯推噓11(11025)
留言36則, 2人參與, 最新討論串1/1
http://www.ewp.rpi.edu/hartford/~parenw/AEM2/project/backupfiles/graetz.f 檔案連結 我在進行fortran時,會跑出很多的error 因為本身第一次接觸,不大知道到底是甚麼問題 猜想是否是版本不同 使用的fortran 95 麻煩幫忙解答> < -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.111.73

04/27 00:07, , 1F
linux用ifort沒有問題,大概是你編譯器的選項或者安裝問題?
04/27 00:07, 1F

04/27 00:09, , 2F
我不大會使用編譯系統 但我用的是WIN7的介面
04/27 00:09, 2F

04/27 00:09, , 3F
還是可以教我如何在WIN7裡面打開的方法嗎?
04/27 00:09, 3F

04/27 00:12, , 4F
要是設定都有弄好的話,g95 graetz.f就應該可以了
04/27 00:12, 4F

04/27 00:15, , 5F
設定是關於甚麼東西?
04/27 00:15, 5F

04/27 00:20, , 6F
環境變數path有加上g95所在的路徑,假設你是用g95
04/27 00:20, 6F

04/27 00:21, , 7F
或者你不嫌麻煩也可以打上g95的整個路徑
04/27 00:21, 7F

04/27 00:21, , 8F
恩 我是用g95 可能要研究一下path要怎麼設定
04/27 00:21, 8F

04/27 00:23, , 9F
整個路徑是指?
04/27 00:23, 9F

04/27 00:24, , 10F

04/27 00:25, , 11F
就是像c:\g95\g95 graetz.f
04/27 00:25, 11F

04/27 00:38, , 12F
看來不是路徑問題 我執行時他出現的error是
04/27 00:38, 12F

04/27 00:38, , 13F
Warning<108>:Array reference at <1> is out of bounds
04/27 00:38, 13F

04/27 00:42, , 14F
感覺是B的值不能設0
04/27 00:42, 14F

04/27 00:47, , 15F
剛剛在win7裝了g95,也是這樣 但是warning只是警告,error
04/27 00:47, 15F

04/27 00:48, , 16F
才是最主要的 雖然這個warning也顯示了程式碼的小問題
04/27 00:48, 16F

04/27 00:49, , 17F
想解決這個warning就要把變數宣告那裡相關的陣列設成0:XXX
04/27 00:49, 17F

04/27 00:50, , 18F
只不過這樣不能用g95 3.f -o dat的指令轉成執行檔
04/27 00:50, 18F

04/27 00:50, , 19F
有幾個變數需要這樣做,然後最下面是一個error,說陣列的
04/27 00:50, 19F

04/27 00:53, , 20F
index不可以用浮點數表示,所以需要把k變成整數
04/27 00:53, 20F

04/27 00:55, , 21F
Rn那一項比較沒頭緒
04/27 00:55, 21F

04/27 01:00, , 22F
這份程式碼比較奇怪,fortran的陣列都是1開始的,但它寫的
04/27 01:00, 22F

04/27 01:01, , 23F
好像c一樣,當成是0開始了
04/27 01:01, 23F

04/27 01:02, , 24F
Error: Array index at (1) must be of INTEGER type
04/27 01:02, 24F

04/27 01:02, , 25F
你是說這個錯誤嗎?
04/27 01:02, 25F

04/27 01:04, , 26F
那個解決了 是Rn裡 Array reference at <1> is out of bounds
04/27 01:04, 26F

04/27 01:07, , 27F
奇怪我看不見這個,但它確實是有問題,跟上面的一樣
04/27 01:07, 27F

04/27 01:10, , 28F
OK 順利跑出結果了~ 感謝大大幫助^^
04/27 01:10, 28F

04/27 01:11, , 29F
還有就是它以前拿k當浮點數的地方都要看看 k/100之類的
04/27 01:11, 29F

04/27 01:11, , 30F
要變成k/100.或者類似的才不會變成整數相除
04/27 01:11, 30F

04/27 01:13, , 31F
只不過他跑完怎麼會馬上自動關閉@_@
04/27 01:13, 31F

04/27 01:17, , 32F
在cmd裡運行就不會
04/27 01:17, 32F

04/27 01:21, , 33F
或者在最後的end前加上call system('pause')
04/27 01:21, 33F

04/27 01:22, , 34F
留意nqt也要加個0,不然最後那裡也會有問題
04/27 01:22, 34F

04/27 01:27, , 35F
他一開始定義的5001是表示程式所能寫進最大的記憶數只有5001?
04/27 01:27, 35F

04/27 01:33, , 36F
是從1到5001的5001個數值,所以它想用第0個就可能有問題
04/27 01:33, 36F
文章代碼(AID): #1FcN44mM (Fortran)
文章代碼(AID): #1FcN44mM (Fortran)