Aiuto con un programma FORTRAN

di il
3 risposte

Aiuto con un programma FORTRAN

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

3 Risposte

  • Re: Aiuto con un programma FORTRAN

    Se non sbaglio CHARACTER indica un solo carattere e non una stringa. Dovrai scrivere CHARACTER(10) per una stringa
  • Re: Aiuto con un programma FORTRAN

    Fantastico. grazie!
    ho cambiato anche il posizionamento dell'operazione rad = SQRT (b/a).
    se la lasciavo lì dov'era su schermo mi uscivano dei NaN, quindi l'ho duplicata. l'ho cancellata da lì e messa una volta dopo case (maggiore) e una volta dopo case (minore). però non riesco a capire come mai usciva un NaN
  • Re: Aiuto con un programma FORTRAN

    Perché saprai che le istruzioni vengono eseguite in sequenza e dove l'avevi messa ancora a e b valevano 0
Devi accedere o registrarti per scrivere nel forum
3 risposte