Эй, я написал это (фортран) с целью найти минимальное остовное дерево для группы точек ( syscount из них). Я точно знаю, что этот подход работает, так как я написал это в javascript ранее сегодня. JS медленный, хотя, и я хотел посмотреть, насколько быстрее будет Фортран!
Единственная проблема в том, что он не работает, я получаю досадную ошибку;
prims.f95: 72,43:
if ((check == 1) .and. (Путь (nodein (j)) (k)
1
Ошибка: в выражении (1)
ожидается правая скобка
Что, черт возьми, это такое ?! 43-й символ в строке - это «h» «пути»
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
Кроме того, я довольно плохо знаком с фортраном, поэтому у меня есть еще несколько вопросов;
Могу ли я использовать && вместо .and.
Есть ли версии цикла for (объект в списке) {}, найденные во многих других языках?
есть ли версия функции 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. Пожалуйста, не сердитесь, если я нарушил кучу вещей из этикета!)