Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fortran: determine the horizontal distance of a ball

  1. Sep 30, 2012 #1
    Im writing a program to determine the horizontal distance of a ball but getting this error:

    Y(t)=Y0+VY0*t+(1/2)*g*t^2
    1
    Error: Unclassifiable statement at (1)

    Distance=(X(t))^2+(Y(t))^2
    1
    Error: Unclassifiable error at (1)



    My code is as follows:

    PROGRAM as_the_ball_is_thrown

    IMPLICIT NONE

    INTEGER::Y0, X0, V0, g, theta, t
    CHARACTER::Distance, VY0, VX0, X(t), Y(t)


    X0=0
    Y0=0
    V0=20
    g=9.81


    WRITE(*,*) "Please enter amount of time the ball traveled"
    READ(*,*) t

    WRITE(*,*) "Please enter the angle to which the ball was thrown"
    READ(*,*) theta

    DO
    Y(t)=Y0+VY0*t+(1/2)*g*t^2
    X(t)=X0+VX0*t
    VX0=V0*COS(theta*3.14159/180)
    VY0=V0*SIN(theta*3.14159/180)
    Distance=(X(t))^2+(Y(t))^2
    END DO


    WRITE(*,*) "The horizontal distance the ball traveled is"
    READ(*,*) Distance
    WRITE(*,*) "meters"

    END PROGRAM as_the_ball_is_thrown



    Can anyone tell me why this is wrong?

    Thanks!
     
  2. jcsd
  3. Sep 30, 2012 #2

    AlephZero

    User Avatar
    Science Advisor
    Homework Helper

    Re: Fortran help!!!!

    ^ is not the Fortran operator for "raise to a power". It should be **.

    Also (1/2) will be evaluated in integer arithmetic since 1 and 2 are both integers, and the integer division will give 0 which is not what you want. The best fix is to replace (1/2) by 0.5.

    Declaring Y0, X0, V0, g, theta, t as INTEGER is probably not a good idea, especially since you then try to set g = 9.81 (which will actually set it to 9).
     
  4. Oct 1, 2012 #3

    Mark44

    Staff: Mentor

    Re: Fortran help!

    In addition to what AlephZero said, you have problems with your declarations for X(t) and Y(t). For one thing, this is not how you declare arrays. For another thing, why are these character-type variables? That doesn't make any sense.
     
  5. Oct 1, 2012 #4
    Re: Fortran help!

    Awesome thanks! That fixed all the errors. Now for some reason the program just stops and doesn't print anything after a person enters the angle. Do you guys know why?
     
  6. Oct 1, 2012 #5

    Mark44

    Staff: Mentor

    Re: Fortran help!

    There are a couple things wrong.
    1) You have what I believe is an infinite loop below where you shouldn't be using a loop at all. OTOH, if you are trying to set the values of an array to certain values, maybe that's what you're trying to do. If that's the case, the following code won't work, because array indexes have to be integer values 1, 2, 3, and so on.

    It's hard to tell what you're trying to do, though.
    Code (Text):

    DO
     Y(t)=Y0+VY0*t+(1/2)*g*t^2
     X(t)=X0+VX0*t
     VX0=V0*COS(theta*3.14159/180)
     VY0=V0*SIN(theta*3.14159/180)
     Distance=(X(t))^2+(Y(t))^2
    END DO
     
    2. Distance is computed, so you don't need to READ it, just WRITE it.
    Code (Text):
     
    WRITE(*,*) "The horizontal distance the ball traveled is"
     READ(*,*) Distance
    WRITE(*,*) "meters"
     
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Fortran: determine the horizontal distance of a ball
  1. FORTRAN Help (Replies: 1)

  2. Fortran Help (Replies: 2)

  3. Infinity in fortran (Replies: 5)

  4. Linking Fortran (Replies: 5)

Loading...