INTEGER FUNCTION Romano2Intero (ch)
IMPLICIT NONE
CHARACTER ch
IF (ch .EQ. 'I') THEN
Romano2Intero = 1
ELSE IF (ch .EQ. 'V') THEN
Romano2Intero = 5
ELSE IF (ch .EQ. 'X') THEN
Romano2Intero = 10
ELSE IF (ch .EQ. 'L') THEN
Romano2Intero = 50
ELSE IF (ch .EQ. 'C') THEN
Romano2Intero = 100
ELSE IF (ch .EQ. 'D') THEN
Romano2Intero = 500
ELSE IF (ch .EQ. 'M') THEN
Romano2Intero = 1000
ELSE
Romano2Intero = 0
ENDIF
END
PROGRAM NumeriRomaniNonCrescenti
IMPLICIT NONE
CHARACTER car
INTEGER somma
INTEGER Romano2Intero
DATA somma/0/
WRITE (*,*) 'Inserisci le cifre di un numero romano, una per riga,
$ terminando con un punto !'
WRITE (*,*) 'Le cifre (M,D,C,L,X,V,I) devono comparire in ordine n
$on crescente!'
READ (*,100) car
DO WHILE (car .NE. '.')
somma = somma + Romano2Intero(car)
READ (*,100) car
ENDDO
WRITE (*,*) 'Numero corrispondente : ', somma
STOP
100 FORMAT(A1)
END