Quale versione del fortran utilizzi?
A cura di Giuseppe Ciaburro
Pubblicato il 07/10/2003
Un programma fortran per convertire una cifra di un numero romano in intero
************************************************************************
* File: romani2.for
************************************************************************
* Scopo: uso di ciclo while e di funzioni
************************************************************************
INTEGER FUNCTION Romano2Intero (ch)
* Converte una cifra di un numero romano in un intero
IMPLICIT NONE
* Dichiarazioni tipo parametri formali
* parametri di input
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
* Romano2Intero
PROGRAM NumeriRomaniNonCrescenti
* Legge da tastiera una sequenza di caratteri fra 'I','V','X','L','C','D','M'
* (che rappresentano un numero romano) terminata da un punto, e stampa il
* numero intero corrispondente.
* Assume che le cifre romane compaiano SOLO in ordine non crescente.
IMPLICIT NONE
* Dichiarazioni variabili
CHARACTER car
INTEGER somma
* Dichiarazioni funzioni esterne
INTEGER Romano2Intero
* parametri: (CHARACTER)
* Inizializzazione variabili
DATA somma/0/
* Istruzioni esecutive
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
* Istruzioni FORMAT
100 FORMAT(A1)
END