Эй, я написал это (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
Кроме того, я довольно новыми для Fortran, так что у меня есть несколько других вопросов;
Могу ли я использовать & & вместо .and. ?
Есть ли версии для (объекта в списке) {} петли, найденной на многих других языках?
Есть ли версия php-функции in_array? т.е. BOOL in_array (иглы, стог), и если есть, то есть лучший способ сделать это, чем:
check = false
Asize = size(array)
do i = 1, Asize
if(array(i) == needle) then
check = true
end if
end do
затем с помощью переменной проверки, чтобы увидеть, если она есть?
(я не писал ничего на StackOverflow раньше. Пожалуйста, не сердитесь, если я сломал нагрузки этикета вещей!)
Можете ли вы использовать == в Fortran? В прошлый раз я использовал его (Fortran 77 - я знаю, что мир изменился с тех пор) вы использовали .EQ. и .LT. и так далее. Я знаю, что Fortran 90 много модернизировал, но я не знаю, что изменилось. Попробуйте использовать .EQ., .LT., .LE., .NE., .GT., .GE. а также .AND., .OR., и .NOT. и посмотреть, помогает ли это. Классический Фортран говорит, но, скорее всего, будет работать. –
этот сайт: http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap03/logical.html говорит == должен работать, также работает несколько строк выше, и если я меняю его, он просто сдвигает ошибку до 72.46. не похоже, что проблема :-( – will
Вы уверены, что это выражение «путь (nodesin (j)) (k)»? Что такое «путь» и «узлы»? Как они определены в коде? – Wildcat