# Fortran 90 very basic question : else if statement

1. Nov 10, 2008

### fluidistic

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. Nov 10, 2008

### montoyas7940

Ok. It has been a long time (fortran77) but try an else in place of your first endif.

3. Nov 10, 2008

### fluidistic

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.

4. Nov 10, 2008

### montoyas7940

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.

5. Nov 10, 2008

### montoyas7940

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

6. Nov 11, 2008

### fluidistic

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
7. Nov 11, 2008

### montoyas7940

That's even better. And you are welcome.

That was a fun trip in the way back machine.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook