Ciao a tutti,
ho scritto questo programma Fortran che risolve una disequazione di secondo grado dei tipi indicati nel commento. Il programma parte ma non funziona correttamente (inserisco "maggiore" o "minore", poi i due numeri a e b, ma mi manda in CASE DEFAULT direttamente). Qualcuno saprebbe darmi una mano? :/
PROGRAM disequazione
IMPLICIT NONE
!voglio che il compilatore risolva una disequazione di secondo grado del tipo ax^2>b oppure ax^2<b
REAL :: a, b, rad
CHARACTER :: verso
rad = SQRT(b/a)
WRITE (*,*) "decidi il verso della disequazione: maggiore o minore?"
READ (*,*) verso
WRITE (*,*)"immetti due valori interi per a e per b"
READ (*,*) a, b
SELECT CASE (verso)
CASE ("maggiore")
IF (a > 0 .AND. b .GE. 0.) THEN
WRITE (*,*) " x < - ", rad, " oppure x > + ", rad
READ (*,*)
ELSE IF ( a < 0 .AND. b < 0.) THEN
WRITE (*,*) " - ", rad, " < x < ", " + ", rad
READ (*,*)
ELSE IF ( a > 0 .AND. b .LE. 0.) THEN
WRITE (*,*) "la disequazione Š sempre soddisfatta"
READ (*,*)
ELSE
WRITE (*,*) "la disequazione non Š mai soddisfatta"
READ (*,*)
END IF
CASE("minore")
IF (a > 0 .AND. b .GE. 0.) THEN
WRITE (*,*) " - ", rad, " < x < ", " + ", rad
READ (*,*)
ELSE IF ( a < 0 .AND. b < 0.) THEN
WRITE (*,*) " x < - ", rad, " oppure x > + ", rad
READ (*,*)
ELSE IF ( a > 0 .AND. b .LE. 0.) THEN
WRITE (*,*) "la disequazione non Š mai soddisfatta"
READ (*,*)
ELSE
WRITE (*,*) "la disequazione Š sempre soddisfatta"
READ (*,*)
END IF
CASE DEFAULT
WRITE (*,*) "errore di digiting"
END SELECT
STOP
END PROGRAM disequazione