嘿,我寫這個(fortran)的目的是找到一堆點的最小生成樹(syscount其中)。我知道這個方法是有效的,因爲我今天早些時候用javascript寫了它。 js雖然很慢,但我想看看fortran會快多快! 唯一的問題是它不工作,我得到一個惱人的錯誤;爲什麼Fortran代碼不工作?
prims.f95:72.43:
if((check == 1) .and. (path(nodesin(j))(k) < minpath)) then
1
Error: Expected a right parenthesis in expression at (1)
這到底是什麼?!上線第43字符是「路徑」
nodesin(1) = 1
do i = 1,syscount-1
pathstart = -1
pathend = -1
minpath = 2000
do j = 1,i
do k = 1, syscount
check = 1
do l = 1, i
if(nodesin(l) == k) then
check = 0
end if
end do
if((check == 1) .and. (path(nodesin(j))(k) < minpath)) then
minpath = path(nodesin(j))(k)
pathstart = nodesin(j)
pathend = k
end if
end do
end do
nodesin(i+1) = pathend
minpaths(i)(1) = pathstart
minpaths(i)(2) = pathend
end do
同樣的「H」,我是相當新的Fortran,所以我有一些其他問題;我可以使用& &而不是.and。 ?
是否有在其他許多語言中找到的for(object in list){}循環的版本?
有沒有PHP函數in_array的verion?即布爾in_array(針,乾草堆),如果有,有沒有這樣做比一個更好的辦法:
check = false
Asize = size(array)
do i = 1, Asize
if(array(i) == needle) then
check = true
end if
end do
然後使用檢查參數,看看它的存在?
(我還沒有張貼任何計算器之前,請不要生氣,如果我打破的禮儀東西負載!)
你可以在Fortran中使用==嗎?上次我使用它(Fortran 77 - 我知道世界已經改變了),你使用了.EQ。和.LT。等等。我知道Fortran 90進行了很多現代化改造,但我不知道它發生了什麼變化。嘗試使用.EQ。,.LT。,.LE。,.NE。,.GT。,.GE。以及.AND。,.OR。和.NOT。並看看是否有幫助。經典Fortran發言 - 但可能會工作。 – 2010-08-27 12:43:39
這個網站:http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap03/logical.html 說==應該工作, 也,它的工作幾行,並且如果我改變它,它只是將錯誤轉移到72.46。 看起來不是這個問題:-( – will 2010-08-27 13:05:04
你確定這個表達式的路徑(nodesin(j))(k)「?什麼是」路徑「和」nodesin「?它們是如何在代碼中定義的? – Wildcat 2010-08-27 13:56:31