Ошибка компиляции на Фортране: две основные программы в (1) и (2) - PullRequest
0 голосов
/ 16 ноября 2011

У меня проблемы с компиляцией этой программы, которую я написал. Я часами пытался выяснить, в чем проблема, но просто говорится, что есть две основные программы, которые ничем не помогают. Буду очень признателен за любую помощь. Спасибо

c   comments
*

    program cylinder

    real diam(10),height(10),volume(10)
    external circ,surface,vol
    integer count,i,j
    parameter (pi = 3.14159)
    j = 0
    count = 1

    do i=1,10
    diam(i) = 0
    end do  

 10 j = j+1
    write(*,*) 'Please enter the diameter and height of
     A  a cylinder'
    read*, diam(j),height(j)

    if (diam(j) .NE. 0 .AND. j .LE. 10) goto 10


 20 write(*,*) 'Cylinder', count, 'Circumfrence =', circ(diam)

    write(*,*) 'Total Surface Area=', 
     B  surface(diam,height)

    Call vol(diam,height,volume)
    write(*,*) 'Volume=', volume(count)

    count = count+1

    if (diam(count) .NE. 0 .AND. count .LE. 10) goto 20

    end

    function circ(d) = d*pi

    function surface(d,h)
    real d,h
    surface = 2*pi*(d/2.)**2 + d*pi*h
    end

    subroutine vol(d,h,volume)
    real d,h,volume(count)
    volume(count) = h*pi*(d/2.)**2
    end

1 Ответ

2 голосов
/ 16 ноября 2011

Для конкретной проблемы наличия двух основных программ вы можете устранить это, заменив строку

      function circ(d) = d*pi

в

      function circ(d)
      real circ
      real d
      circ = d*pi
      end

Другими очевидными проблемами является разделение числа Пи, подсчет по программе / функции / подпрограмм. когда вы находитесь в функции, вы не можете видеть, что находится в основной программе. Самое простое решение - передать их вместе с другими параметрами. В подпрограмме том,

      volume(count) = h*pi*(d/2.)**2

почему у вас count?

...