Anonymous user
Number names: Difference between revisions
→{{header|Fortran}}
(Added Fortran) |
|||
Line 624:
=={{header|Fortran}}==
{{works with|Fortran|90 and later}}
<lang fortran>program
implicit none
integer ::
integer ::
integer :: m
integer :: n
character (9), dimension (19), parameter :: small = &
& (/'one ', 'two ', 'three ', 'four
& 'five ', 'six ', 'seven
& 'nine ', 'ten ', 'eleven
& 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', &
& 'seventeen', 'eighteen ', 'nineteen '/)
character (7), dimension (2 : 9), parameter :: tens = &
& (/'twenty ', 'thirty ', 'forty ', 'fifty
& 'seventy', 'eighty ', 'ninety '/)
character (8), dimension (3), parameter :: big = &
& (/'thousand', 'million ', 'billion '/)
character (256) :: r
do
read (*, *, iostat =
if (
exit
end if
r = 'zero'
else
do
exit
end if
r = trim (big (e)) // ' ' // r
end if
if (modulo (m, 100) > 0) then
if (modulo (m, 100) < 20) then
r = trim (small (modulo (m, 100))) // ' ' // r
else
if (modulo (m, 10) > 0) then
r = trim (small (modulo (m, 10))) // ' ' // r
r = trim (tens (modulo (m, 100) / 10)) // '-' // r
else
r = trim (tens (modulo (m, 100) / 10)) // ' ' // r
end if
end if
end if
if (modulo (m, 1000) / 100 > 0) then
r = 'hundred' // ' ' // r
r = trim (small (modulo (m, 1000) / 100)) // ' ' // r
end if
end if
m = m / 1000
e = e + 1
end do
if (
end if
end if
write (*, '(a)') trim (r)
end do
Sample input:
<lang>-1
Line 771 ⟶ 703:
forty-two
two billion one hundred forty-seven million four hundred eighty-three thousand six hundred forty-seven</lang>
=={{header|Haskell}}==
<lang haskell>import Data.List (intercalate, unfoldr)
|