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

Fortran 90 very basic question : else if statement

  1. Nov 10, 2008 #1

    fluidistic

    User Avatar
    Gold Member

    Hi there,
    I've tried all I could in order to complete a very simple and basic program that finds the roots of any quadratic binomial.
    You have to enter the coefficients a, b and c and it would find the roots. I could do that, but a problem occurred if I typed a=0. Of course if a=0 the binomial is not quadratic (and not even a binomial), so I wanted to let it know to the user of the program. Here my problems started... I don't know how to insert in my program that if a=0 then a message would appear saying that it isn't a quadratic binomial.
    Here it comes :
    I'm almost sure that I cannot type endif and then type if...
    But I tried many other things like
    and changing the order of the if statements... I always get errors and the program doesn't compile.
    Any help is appreciated.

    Note: If I erase the if (a=0) statement the program works well. (it compiles and find roots unless I type a=0).
     
  2. jcsd
  3. Nov 10, 2008 #2
    Ok. It has been a long time (fortran77) but try an else in place of your first endif.
     
  4. Nov 10, 2008 #3

    fluidistic

    User Avatar
    Gold Member

    Thanks for the answer.
    It doesn't work, I get an error : Unexpected ELSE statement.
    By the way the other error is : Error: Syntax error in IF-expression at (1). (It points out the "a" in "if (a=0) then". I don't see why it is a syntax error... strange.
     
  5. Nov 10, 2008 #4
    Look at this and see what you think. It compiled on a G77 compiler. It needed a == in the
    if (a=0) then

    there is still a problem with ending the prog after the message on a=0

    Program findroot

    Write(*,*)'Enter a, b and c'
    Read(*,*)a,b,c


    if (a == 0) then
    write(*,*)'This is not a quadratic binomial'
    delta = b**2-4*a*c
    endif

    If (delta >= 0) then
    z = (-b+sqrt(delta))/(2*a)
    y = (-b-sqrt(delta))/(2*a)
    Write(*,*)'The roots are',z,y


    Elseif (delta<0) then
    write(*,*)'The binomial has no root in R but in C its roots

    are',-b,'+i',sqrt(-delta)/(2*a),'and',-b,'-i',sqrt(-delta)/(2*a)

    endif

    End program



    There are some variable declaration differences between my compiler and your also
    so ignore my lack of declaration. I am still messing with it so hang with me.
     
  6. Nov 10, 2008 #5
    how about this?

    Program findroot

    Write(*,*)'Enter a, b and c'
    Read(*,*)a,b,c


    if (a == 0) then
    write(*,*)'This is not a quadratic binomial'
    goto 90
    endif

    delta = b**2-4*a*c
    If (delta >= 0) then
    z = (-b+sqrt(delta))/(2*a)
    y = (-b-sqrt(delta))/(2*a)
    Write(*,*)'The roots are',z,y


    Elseif (delta<0) then
    write(*,*)'The binomial has no root in R but in C its roots

    are',-b,'+i',sqrt(-delta)/(2*a),'and',-b,'-i',sqrt(-delta)/(2*a)

    endif
    90 write(*,*)'Goodbye'
    End program
     
  7. Nov 11, 2008 #6

    fluidistic

    User Avatar
    Gold Member

    Thanks a lot montoyas!
    It works great... I forgot that 2 signs "=" were needed. That's nice.
    What about this :
    :)
     
    Last edited: Nov 11, 2008
  8. Nov 11, 2008 #7
    That's even better. And you are welcome.

    That was a fun trip in the way back machine.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Fortran 90 very basic question : else if statement
  1. Fortran 90 Question (Replies: 6)

  2. Fortran 90 question (Replies: 1)

Loading...