→ motoman:不能抓... 04/23 18:24
→ motoman:不會用CVF...冏 原po先寫interface看看 我遇過類似問題 04/23 18:37
→ motoman:對了 可以抓 04/23 18:38
→ motoman:你xl,xr,dx是real N是整數...還有你func宣告要加external 04/23 18:43
→ tp6b123:抱歉還是新手,不太懂m大說的方法 04/24 00:27
→ motoman:不同變數型態不能混合運算 你寫了 (xl-xr)/dx=N 04/24 09:19
→ motoman:要把real變integer或integer變real 還有你allocate時 04/24 09:20
→ motoman:裡面的N一定要整數才行 函數宣告時要寫 real,external::f 04/24 09:21
→ motoman:最後一個很細節的問題是allocatble進出函式時某些編譯器 04/24 09:22
→ motoman:會出問題或者編譯過但執行有問題 解決方法是把這變數放在 04/24 09:23
→ motoman:module或寫個interface 04/24 09:23
→ tp6b123:那請問如何寫module or interface 我剛試過把n的運算式 04/24 10:50
→ tp6b123:改成N=int((xr-xl)/dx) func也加了real,external::f 04/24 10:51
→ tp6b123:還是不能跑出來= = 04/24 10:51
→ Semisphere:請問你說的不能跑出來,是指哪個變數有問題? 04/24 12:49
→ Semisphere:在主程式呼叫卻無法回傳值,這句是指陣列Euler嗎 04/24 12:50
→ Semisphere:Euler只有在副程式Euler1裡面有計算,但你沒傳Euler進去 04/24 12:51
→ Semisphere:自然沒有回傳,你的Euler只能算是副程式Euler1所宣告的 04/24 12:52
→ Semisphere:區域變數,主程式main雖然也宣告Euler,但你沒傳進副程式 04/24 12:53
→ Semisphere:接收,也沒初始化,所以看起來有問題 04/24 12:54
→ tp6b123:對就是Euler 04/24 12:56
→ tp6b123:Euler只有在副程式Euler1 這段是什麼意思 04/24 12:57
→ tp6b123:之前我副程式用這樣寫兩個矩陣的相乘傳出第三個矩陣 04/24 12:58
→ tp6b123:直接用這種方式就可以傳回了 04/24 12:59
矩陣相乘: http://www.badongo.com/cn/file/22216647
※ 編輯: tp6b123 來自: 220.136.169.251 (04/24 13:02)
→ tp6b123:感謝大家回答讓我又學習到東西 ︿︿ 04/24 13:03
→ Semisphere:你之所以可以從副程式Mu中回傳C,就是因為你有傳C進去 04/24 13:23
→ Semisphere:但你現在這支程式你沒傳Euler進去Euler1,她沒辦法回傳 04/24 13:23
→ Semisphere:你沒把Euler宣告成全域變數,她只是各副程式中的區域變 04/24 13:24
→ Semisphere:數,自然不會有你要的效果 04/24 13:25
→ tp6b123:知道了!!要改成Euler1(Euler,N,x,dx) 04/24 13:37
→ tp6b123:感謝 04/24 13:37